Objective c 如何将整数转换为NSString?

Objective c 如何将整数转换为NSString?,objective-c,nsstring,nsuinteger,Objective C,Nsstring,Nsuinteger,如何将nsuiger转换为NSString?我已尝试,但我的NSString始终返回0 NSUInteger NamesCategoriesNSArrayCount = [self.NamesCategoriesNSArray count]; NSLog(@"--- %d", NamesCategoriesNSArrayCount); [NamesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%d",

如何将
nsuiger
转换为
NSString
?我已尝试,但我的
NSString
始终返回0

NSUInteger NamesCategoriesNSArrayCount = [self.NamesCategoriesNSArray count];  
NSLog(@"--- %d", NamesCategoriesNSArrayCount);  
[NamesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%d",    NamesCategoriesNSArrayCount]];  
NSLog(@"=== %d", NamesCategoriesNSArrayCountString);

我希望您的
namescategoriesnarraycountstring
NSString
; 如果是,请使用下面的代码行

NamesCategoriesNSArrayCountString  = [NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];
伊斯蒂德

[NamesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];

使用对arm64的支持进行编译时,这不会生成警告:

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

arm64
编译时,请使用以下命令以避免出现警告:

[NSString stringWithFormat:@"%tu", myNSUInteger];
或者,在您的情况下:

NSUInteger namesCategoriesNSArrayCount = [self.NamesCategoriesNSArray count];  
NSLog(@"--- %tu", namesCategoriesNSArrayCount);  
[namesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%tu", namesCategoriesNSArrayCount]];  
NSLog(@"=== %@", namesCategoriesNSArrayCountString);
(另外,提示:变量以小写开头。Info:)

您还可以使用:

NSString *rowString = [NSString stringWithFormat: @"%@",  @(row)];
其中,行是整数。

当您需要格式化Apple类型时,Apple的这篇文章是专门针对以下情况编写的:

OSX使用多种数据类型NSInteger、NSInteger、CGFloat和CFIndex来提供一致的方法来表示32位和64位环境中的值。在32位环境中,NSInteger和NSInteger分别定义为int和unsigned int。在64位环境中,NSInteger和NSInteger分别定义为long和unsigned long。为了避免根据平台使用不同的printf样式类型说明符,可以使用表3中所示的说明符。请注意,在某些情况下,可能需要强制转换值

  • [NSString stringWithFormat:@“%ld”(长)值]
    :NSInteger显示为十进制
  • [NSString stringWithFormat:@“%lx”(长)值]
    :NSInteger显示为十六进制
  • [NSString stringWithFormat:@“%lu”(无符号长)值]
    :NSUTEGER显示为十进制
  • [NSString stringWithFormat:@“%lx”(无符号长)值]
    :NSInteger显示为十六进制
  • [NSString stringWithFormat:@“%f”,值]
    :CGFloat
  • [NSString stringWithFormat:@“%ld”(长)值]
    :cf索引显示为十进制
  • [NSString stringWithFormat:@“%lx”(长)值]
    :cf索引显示为十六进制

有关更多详细信息,请参阅本文。

从Xcode 4.5开始,这将抛出“格式字符串未使用数据参数”警告。有人知道正确的格式吗?忽略最后一个。我有一个打字错误,我没有注意到的时间最长,而打字错误是什么造成的错误<代码>[NSString stringWithFormat:@“%d”,myNSUInteger]仍然是正确的方法。由@andreas ley给出的答案更准确<代码>%d是有符号整数的格式字符串。NSUTEGER是一个无符号长整数。一旦超出无符号和有符号范围之间的重叠,就需要使用
%lu
,否则当数字实际上是正数时将打印负值。或者
%zd
对于
NSUInteger
,而不进行打字。@PaulPeelen你的意思是说
NSInteger
?我的错。。当然,我的意思是,
%tu
(因为它没有签名)。看这里:非常正确。其实我不知道。很好,记住未来。