Objective c 获取NSInteger值
我试图获取NSInteger的值并为其设置UILabel值。代码如下:Objective c 获取NSInteger值,objective-c,ios,ios6,Objective C,Ios,Ios6,我试图获取NSInteger的值并为其设置UILabel值。代码如下: counter_.text = [NSString stringWithFormat:@"%@", [counterAmount intValue]]; 其中counter_uu是我的标签,counterAmount是我的NSInteger。我一直得到一个“接收者类型”nStime**(Ak'int *)不是“ID”或接口指针,考虑将其转换为ID。 我不太清楚如何理解这一点。感谢您的帮助。intValue是一种返回C原语值
counter_.text = [NSString stringWithFormat:@"%@", [counterAmount intValue]];
其中counter_uu是我的标签,counterAmount是我的NSInteger。我一直得到一个“接收者类型”nStime**(Ak'int *)不是“ID”或接口指针,考虑将其转换为ID。
我不太清楚如何理解这一点。感谢您的帮助。
intValue
是一种返回C原语值的方法。%@
打印对象。为了输出C原语值,您必须在格式化字符串中提供类型。%d
是有符号整数的类型
根据这个问题,正如borrden在下面非常正确地向我指出的,这里处理的类型是
NSInteger
,而不是NSNumber
。在iOS中NSInteger
是int
的typedef,因此您直接处理的是一个基本类型。NS前缀并不意味着它是一个对象。计数器金额是一个NSInteger
,您不能在其上使用intValue
(因为它不是一个对象,您实际上不能向它发送任何消息)
相反,请使用:
counter_.text = [NSString stringWithFormat:@"%d", counterAmount];
话虽如此,如果您要向用户显示此值,您实际上应该使用数字格式化程序,以便按照他们在设置应用程序中设置的方式对其进行格式化:
NSNumber *number = [NSNumber numberWithInt:counterAmount];
NSNumberFormatter *formatter = [NSNumberFormatter new];
formatter.numberStyle = NSNumberFormatterDecimalStyle; // Or whichever style is appropriate for your number.
counter_.text = [formatter stringFromNumber:number];
counterAmount是一个
NSInteger
,所以这个答案是不正确的。你暗示我误读了这个问题的观点是完全正确的,我已经对我的答案进行了适当的编辑,以避免潜在的误导信息持续存在。