Как преобразовать NSIntegerв NSStringтип данных?
Я попробовал следующее, где месяц NSInteger:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Как преобразовать NSIntegerв NSStringтип данных?
Я попробовал следующее, где месяц NSInteger:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Ответы:
NSIntegers не являются объектами, к которым вы приводите их long, чтобы соответствовать определению текущей 64-битной архитектуры:
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
[@(integerValue) stringValue]это более чистый подход.
Obj-C way =):
NSString *inStr = [@(month) stringValue];
An NSIntegerимеет метод, stringValueкоторый можно использовать даже с литералом
NSString *integerAsString1 = [@12 stringValue];
NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];
Очень просто. Не так ли?
var integerAsString = String(integer)
%zdработает для NSIntegers ( %tuдля NSUInteger) без приведений и предупреждений как для 32-разрядных, так и для 64-разрядных архитектур. Я понятия не имею, почему это не « рекомендуемый путь ».
NSString *string = [NSString stringWithFormat:@"%zd", month];
Если вам интересно, почему это работает, посмотрите этот вопрос .
Простой способ сделать:
NSInteger value = x;
NSString *string = [@(value) stringValue];
Здесь @(value)новообращенные данное NSIntegerна NSNumberобъект , для которого вы можете вызвать необходимую функцию, stringValue.
При компиляции с поддержкой arm64, это не сгенерирует предупреждение:
[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
Вы также можете попробовать:
NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];
Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *'). Вместо этого, согласно Apple Docs , я пошел сNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];