我正在尝试获取NSInteger的值并为其设置一个UILabel值。代码如下:
counter_.text = [NSString stringWithFormat:@"%@", [counterAmount intValue]];其中counter_是我的标签,counterAmount是我的NSInteger。我一直收到“接收器类型'NSInteger *‘(又名'int *')不是' id’或接口指针,请考虑将其转换为id。”
我不太确定如何理解这一点。我很感谢你的帮助。
发布于 2012-09-24 11:27:32
intValue是一个返回C原始值的NSNumber方法。%@打印对象。为了输出C原始值,您必须在格式化字符串中提供类型。%d是带符号整数的类型。
根据问题,正如下面borrden非常正确地向我指出的那样,这里处理的类型是NSInteger而不是NSNumber。在iOS中,NSInteger是int的一个类型定义,因此您可以直接处理原始类型。NS前缀并不意味着它是一个对象。
发布于 2012-09-24 11:31:47
因为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];https://stackoverflow.com/questions/12558455
复制相似问题