NSNumber returns 错误的值
NSNumber returns wrong value
我有 NSDictionary
并且我将 'price' 键的值分配给对象的 NSNumber
属性 但是当我记录数字值时,它是一个奇怪的负数!
item.price = [food valueForKey:@"price"];
价格 属性 是 NSNumber
[[food valueForKey:@"price"] class]
将打印 __NSCFNumber
这是正确的。
[[food valueForKey:@"price"] intValue]
returns 0x000000000000c350
也就是 50000
没错
但是当我登录 item.price
或 [item.price integerValue]
时,它是 -15536
这是完全错误的!
有什么想法吗?
食物json样本:
{
"title":"Pizza",
"price":50000
}
假设您正在尝试这样做:
NSDictionary *inventory = @{
@"price" : [NSNumber numberWithInt:50000]
};
NSNumber *num= [inventory valueForKey:@"price"];
NSLog(@"%d,%f,%ld,%@",num,num,num,num);
日志将显示为:
800002,-0.000000,-5764607523033434878,50000
全部都完全different.The最后一个是正确的NSNumber
对象
NSNumber
是一个对象,所以你需要使用 %@ 来记录它,剩下的 %d,%f,%ld 不是对象。
你猜怎么着?
所有这些日志和问题都显示我的 NSNumber 属性 无法存储一些整数。但是整数的范围是多少? -32,768 / 32,768
之间的整数
但是为什么呢?因为我定义了我的托管对象 price
属性 类型 NSInteger 16
!
我应该定义为NSInteger 32
我有 NSDictionary
并且我将 'price' 键的值分配给对象的 NSNumber
属性 但是当我记录数字值时,它是一个奇怪的负数!
item.price = [food valueForKey:@"price"];
价格 属性 是 NSNumber
[[food valueForKey:@"price"] class]
将打印 __NSCFNumber
这是正确的。
[[food valueForKey:@"price"] intValue]
returns 0x000000000000c350
也就是 50000
没错
但是当我登录 item.price
或 [item.price integerValue]
时,它是 -15536
这是完全错误的!
有什么想法吗?
食物json样本:
{ "title":"Pizza", "price":50000 }
假设您正在尝试这样做:
NSDictionary *inventory = @{
@"price" : [NSNumber numberWithInt:50000]
};
NSNumber *num= [inventory valueForKey:@"price"];
NSLog(@"%d,%f,%ld,%@",num,num,num,num);
日志将显示为:
800002,-0.000000,-5764607523033434878,50000
全部都完全different.The最后一个是正确的NSNumber
对象
NSNumber
是一个对象,所以你需要使用 %@ 来记录它,剩下的 %d,%f,%ld 不是对象。
你猜怎么着?
所有这些日志和问题都显示我的 NSNumber 属性 无法存储一些整数。但是整数的范围是多少? -32,768 / 32,768
但是为什么呢?因为我定义了我的托管对象 price
属性 类型 NSInteger 16
!
我应该定义为NSInteger 32