我有NSDictionary
并且我分配了价格'价格'我的对象的NSNumber
属性的关键,但是当我记录数字值时,这是一个奇怪的负数!
item.price = [food valueForKey:@"price"];
价格属性为NSNumber
[[food valueForKey:@"price"] class]
将打印__NSCFNumber
,这是正确的。
[[food valueForKey:@"price"] intValue]
返回0x000000000000c350
50000
,这是正确的
但是当我记录item.price
或[item.price integerValue]
时-15536
这是完全错误的!
有什么想法吗?
食品json样品:{ "标题":"披萨&#34 ;, "价格":50000 }
答案 0 :(得分:5)
猜猜是什么?
所有这些日志和问题都表明我的NSNumber属性不能存储一些整数。但是整数范围是多少?整数介于-32,768 / 32,768
但为什么呢?因为我已经定义了类price
的托管对象NSInteger 16
属性!
我应该将其定义为NSInteger 32
答案 1 :(得分:0)
我们假设您正在尝试这样做:
NSDictionary *inventory = @{
@"price" : [NSNumber numberWithInt:50000]
};
NSNumber *num= [inventory valueForKey:@"price"];
NSLog(@"%d,%f,%ld,%@",num,num,num,num);
,日志将显示为:
800002,-0.000000,-5764607523033434878,50000
所有这些都完全不同。最后一个是正确的NSNumber
对象
NSNumber
是一个对象,所以你需要使用%@来记录它,剩下的%d,%f,%ld不是对象。