142

如何转换NSIntegerNSString数据类型?

我尝试了以下方法,其中月份是NSInteger

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

9 回答 9

280

NSInteger 不是对象,您将它们转换为long,以匹配当前 64 位架构的定义:

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

于 2009-11-25T11:37:04.983 回答
188

Obj-C 方式 =):

NSString *inStr = [@(month) stringValue];
于 2013-04-21T13:33:32.783 回答
80

现代 Objective-C

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

NSString *integerAsString1 = [@12 stringValue];

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

非常简单。不是吗?

迅速

var integerAsString = String(integer)
于 2013-12-14T06:36:26.860 回答
8

%zd适用于 NSIntegers(%tu对于 NSUInteger),在 32 位和 64 位架构上都没有强制转换和警告。我不知道为什么这不是“推荐的方式”。

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

如果您对为什么这样做感兴趣,请参阅此问题

于 2015-05-14T17:20:23.817 回答
5

简单的方法:

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

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

于 2016-06-22T11:11:39.140 回答
2

编译时支持 for arm64,这不会产生警告:

[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
于 2013-12-06T22:25:26.620 回答
2

你也可以试试:

NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];
于 2014-02-06T09:18:43.740 回答
0

给出了答案,但认为在某些情况下,这也是从 NSInteger 获取字符串的有趣方式

NSInteger value = 12;
NSString * string = [NSString stringWithFormat:@"%0.0f", (float)value];
于 2013-04-21T13:13:24.960 回答
0

在这种情况下,NSNumber 可能对您有好处。

NSString *inStr = [NSString stringWithFormat:@"%d", 
                    [NSNumber numberWithInteger:[month intValue]]];
于 2014-08-12T16:37:39.987 回答