如何将NSUInteger
转换为NSString
?我已经尝试了,但我的NSString
一直都是0。
NSUInteger NamesCategoriesNSArrayCount = [self.NamesCategoriesNSArray count];
NSLog(@"--- %d", NamesCategoriesNSArrayCount);
[NamesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];
NSLog(@"=== %d", NamesCategoriesNSArrayCountString);
答案 0 :(得分:34)
在对arm64
的支持进行编译时,这不会产生警告:
[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
答案 1 :(得分:7)
我希望您的NamesCategoriesNSArrayCountString
是NSString
;
如果是,请使用以下代码行。
NamesCategoriesNSArrayCountString = [NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];
而不是
[NamesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];
答案 2 :(得分:5)
编译arm64
时,请使用以下内容以避免警告:
[NSString stringWithFormat:@"%tu", myNSUInteger];
或者,在您的情况下:
NSUInteger namesCategoriesNSArrayCount = [self.NamesCategoriesNSArray count];
NSLog(@"--- %tu", namesCategoriesNSArrayCount);
[namesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%tu", namesCategoriesNSArrayCount]];
NSLog(@"=== %@", namesCategoriesNSArrayCountString);
(另外,提示:变量以小写字母开头。信息:here)
答案 3 :(得分:5)
您也可以使用:
NSString *rowString = [NSString stringWithFormat: @"%@", @(row)];
其中row是NSUInteger。
答案 4 :(得分:0)
当您需要格式化Apple类型时,Apple的这篇String Format Specifiers文章是特定的:
OS X使用多种数据类型-NSInteger,NSUInteger,CGFloat和CFIndex-来提供在32位和64位环境中表示值的一致方法。在32位环境中,NSInteger和NSUInteger分别定义为int和unsigned int。在64位环境中,NSInteger和NSUInteger分别定义为long和unsigned long。为了避免根据平台使用不同的printf样式类型说明符,可以使用表3中所示的说明符。请注意,在某些情况下,您可能必须转换值。
[NSString stringWithFormat:@"%ld", (long)value]
:NSInteger显示为十进制[NSString stringWithFormat:@"%lx", (long)value]
:NSInteger显示为十六进制[NSString stringWithFormat:@"%lu", (unsigned long)value]
:NSUInteger显示为十进制[NSString stringWithFormat:@"%lx", (unsigned long)value]
:NSUInteger显示为十六进制[NSString stringWithFormat:@"%f", value]
:CGFloat [NSString stringWithFormat:@"%ld", (long)value]
:CFIndex显示为十进制[NSString stringWithFormat:@"%lx", (long)value]
:CFIndex显示为十六进制有关详细信息,请参阅文章。