Làm thế nào để một người chuyển đổi NSIntegersang NSStringkiể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 NSIntegersang NSStringkiể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 NSIntegercó phương thức stringValuecó 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)
%zdhoạt động cho NSIntegers ( %tucho 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 NSIntegerthà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];