Làm thế nào để một người chuyển đổi NSInteger
sang NSString
kiểu dữ liệu?
Tôi đã thử như sau, trong đó tháng là một NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Làm thế nào để một người chuyển đổi NSInteger
sang NSString
kiểu dữ liệu?
Tôi đã thử như sau, trong đó tháng là một NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Câu trả lời:
NSIntegers không phải là đối tượng, bạn sử dụng chúng long
để phù hợp với định nghĩa của kiến trúc 64 bit hiện tại:
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
[@(integerValue) stringValue]
là một cách tiếp cận sạch hơn.
Cách Obj-C =):
NSString *inStr = [@(month) stringValue];
An NSInteger
có phương thức stringValue
có thể được sử dụng ngay cả với nghĩa đen
NSString *integerAsString1 = [@12 stringValue];
NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];
Rất đơn giản. Phải không?
var integerAsString = String(integer)
%zd
hoạt động cho NSIntegers ( %tu
cho NSUInteger) không có phôi và không có cảnh báo trên cả kiến trúc 32 bit và 64 bit. Tôi không biết tại sao đây không phải là " cách được đề xuất ".
NSString *string = [NSString stringWithFormat:@"%zd", month];
Nếu bạn quan tâm đến lý do tại sao công trình này nhìn thấy câu hỏi này .
Cách dễ dàng để làm:
NSInteger value = x;
NSString *string = [@(value) stringValue];
Ở đây, @(value)
chuyển đổi cái đã cho NSInteger
thành một NSNumber
đối tượng mà bạn có thể gọi hàm được yêu cầu , stringValue
.
Khi biên dịch với sự hỗ trợ cho arm64
, điều này sẽ không tạo ra một cảnh báo:
[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
Bạn cũng có thể thử:
NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];
Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')
. Thay vào đó theo tài liệu của Apple , tôi đã đi cùngNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];