如何将NSInteger转换为NSString数据类型?

sen*_*thu 130 iphone nsstring nsinteger ios

如何转换NSIntegerNSString数据类型?

我试过以下,其中月份为NSInteger:

  NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Run Code Online (Sandbox Code Playgroud)

luv*_*ere 261

long为了匹配当前的64位体系结构的定义,NSIntegers不是您要转换的对象:

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

  • 我试过这个,但我一直收到警告`格式指定类型'int',但参数的类型为'NSInteger*'(又名'int*')`.相反,根据[Apple docs](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html),我选择了`NSString*inStr = [NSString stringWithFormat: @"%d",(int)month];` (11认同)
  • 请注意,在64位处理器(例如新的A7芯片)上,如果您的应用程序是针对64位编译的,则NSInteger实际上是一个长整数,而不是一个整数.对于通用案例,执行强制转换,(int)月将在64位平台上具有破坏性.如果专门针对Apple平台,更喜欢像Aleksey Kozhevnikov的回答中的Objective-C方式,或类似于int和long的类似东西 - 例如long ;-)一个例子,尽管无符号(意思是非负的)在Andreas莱伊的回答. (8认同)
  • `[@(integerValue)stringValue]`是一种更干净的方法。 (2认同)

Ale*_*kov 177

Obj-C方式=):

NSString *inStr = [@(month) stringValue];
Run Code Online (Sandbox Code Playgroud)


Mad*_*Nik 72

现代目标-C

An NSInteger具有stringValue即使使用文字也可以使用的方法

NSString *integerAsString1 = [@12 stringValue];

NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];
Run Code Online (Sandbox Code Playgroud)

非常简单.不是吗?

迅速

var integerAsString = String(integer)
Run Code Online (Sandbox Code Playgroud)


Kev*_*vin 8

%zd适用于NSIntegers(适用于NSUInteger %tu),在32位和64位体系结构上没有强制转换,也没有警告.我不知道为什么这不是" 推荐方式 ".

NSString *string = [NSString stringWithFormat:@"%zd", month];
Run Code Online (Sandbox Code Playgroud)

如果您对此工作原因感兴趣,请参阅此问题.


Kar*_*ara 5

简单的做法:

NSInteger value = x;
NSString *string = [@(value) stringValue];
Run Code Online (Sandbox Code Playgroud)

这里@(value)将给定的转换NSInteger为一个NSNumber对象,您可以为其调用所需的函数stringValue.