Как преобразовать 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];
Obj-C way =):
NSString *inStr = [@(month) stringValue];
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];
Ответ дан, но думаю, что для некоторой ситуации это также будет интересным способом получить строку из NSInteger
NSInteger value = 12;
NSString * string = [NSString stringWithFormat:@"%0.0f", (float)value];
NSNumber может быть полезен для вас в этом случае.
NSString *inStr = [NSString stringWithFormat:@"%d",
[NSNumber numberWithInteger:[month intValue]]];