Как преобразовать 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];