Как преобразовать NSInteger в тип данных NSString?

Как преобразовать NSInteger в тип данных NSString?

Я пробовал следующее, где месяц - NSInteger:

  NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];

Ответ 1

NSIntegers не являются объектами, вы передаете их в long, чтобы соответствовать определению текущей 64-разрядной архитектуры:

NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];

Ответ 2

Obj-C way =):

NSString *inStr = [@(month) stringValue];

Ответ 3

Современная Objective-C

NSInteger имеет метод stringValue который можно использовать даже с литералом

NSString *integerAsString1 = [@12 stringValue];

NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];

Очень просто. Не так ли?

стриж

var integerAsString = String(integer)

Ответ 4

%zd работает для NSIntegers (%tu для NSUInteger) без заливок и никаких предупреждений на 32-битной и 64-разрядной архитектурах. Я понятия не имею, почему это не " рекомендуемый путь".

NSString *string = [NSString stringWithFormat:@"%zd", month];

Если вас интересует, почему это работает, см. этот вопрос.

Ответ 5

Простой способ сделать:

NSInteger value = x;
NSString *string = [@(value) stringValue];

Здесь @(value) преобразует данный NSInteger в объект NSNumber, для которого вы можете вызвать нужную функцию, stringValue.

Ответ 6

При компиляции с поддержкой arm64 это не приведет к возникновению предупреждения:

[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];

Ответ 7

Вы также можете попробовать:

NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];

Ответ 8

Ответ дан, но думаю, что для некоторой ситуации это также будет интересным способом получить строку из NSInteger

NSInteger value = 12;
NSString * string = [NSString stringWithFormat:@"%0.0f", (float)value];

Ответ 9

NSNumber может быть полезен для вас в этом случае.

NSString *inStr = [NSString stringWithFormat:@"%d", 
                    [NSNumber numberWithInteger:[month intValue]]];