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


137

如何将其转换NSIntegerNSString数据类型?

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

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

Answers:


267

NSIntegers不是对象,可以将它们强制转换为long,以匹配当前的64位体系结构的定义:

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


11
我尝试了此操作,但一直收到警告Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')。取而代之的是,根据苹果公司的文档,我选择了NSString *inStr = [NSString stringWithFormat:@"%d", (int)month];
史蒂文(Steven)

8
请注意,在64位处理器(例如新的A7芯片)上,如果您的应用程序是为64位编译的,则NSInteger实际上是一个long,而不是int。对于一般情况,在64位平台上执行(int)月的转换将具有破坏性。如果专门针对Apple平台,则像在Aleksey Kozhevnikov的回答中那样,采用Objective-C方式,或者在int和long上都可以使用的类似方法(例如long ;-),但是在Andreas中是一个无符号(表示非负数)的示例莱的答案。
Louis St-Amour 2014年

1
@Steven我尝试删除答案,以使当前的,更适用的答案浮出水面并被接受,但是显然,不能删除已接受的答案。因此,我试图至少调整其内容,以便为正在寻找不会触发警告的快速解决方案的人们提供尽可能多的有用信息。
luvieere 2014年

@luvieere Apple的文档清楚地说明了如何使用格式字符串处理NSInteger。您应该更新答案以遵循此建议。
Nikolai Ruhe 2014年

2
[@(integerValue) stringValue]是一种更清洁的方法。
佐拉尔


76

现代物镜

一个NSInteger具有该方法stringValue,可以即使文字一起使用

NSString *integerAsString1 = [@12 stringValue];

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

很简单。是不是

迅速

var integerAsString = String(integer)

8

%zd适用于NSIntegers(适用于NSUInteger %tu),在32位和64位体系结构上均无强制转换且无警告。我不知道为什么这不是“ 推荐方式 ”。

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

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


5

简单的方法:

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

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



1

您也可以尝试:

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

0

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

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

0

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

NSString *inStr = [NSString stringWithFormat:@"%d", 
                    [NSNumber numberWithInteger:[month intValue]]];
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.