获取NSInteger值

时间:2012-09-24 03:22:18

标签: objective-c ios ios6

我试图获取NSInteger的值并为其设置UILabel值。代码如下:

counter_.text = [NSString stringWithFormat:@"%@", [counterAmount intValue]];

其中counter_是我的标签,counterAmount是我的NSInteger。我一直得到一个“接收器类型'NSInteger *'(又名'int *')不是'id'或接口指针,考虑将其转换为id。

我不太清楚如何理解这一点。我很感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

intValue是一个返回C原始值的NSNumber方法。 %@打印对象。要输出C原始值,您必须在格式化字符串中提供类型。 %d是有符号整数的类型。

根据这个问题,正如下面的borrden所指出的那样,这里处理的类型是NSInteger而不是NSNumber。在iOS NSInteger中,typedef为int,因此您直接处理基本类型。 NS前缀并不意味着它是一个对象。

答案 1 :(得分:1)

由于counterAmount是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];