【发布时间】:2012-11-29 15:26:59
【问题描述】:
NSNumber 允许的最高 int 是多少?我已经在这些论坛的其他地方看到了答案,因此我对此深感困惑。
int miles = 35000;
vehicle.mileage = [NSNumber numberWithInt:miles];
NSLog(@"int value = %d", miles);
NSLog(@"mileage = %@", vehicle.mileage);
输出是:
int value = 35000
mileage = -30536
我一定是在这里遗漏了一些非常简单的东西,但是有人可以向我解释为什么它不能正常工作吗?
更新: 进一步观察后,vehicle.mileage 被正确设置为 35000,但是当我通过 NSLog(@"%@", vehicle.mileage) 显示它时,它输出不正确。当它停止工作时,我还没有找到“神奇”值,因为到目前为止,它适用于高达 ~30,000 的值。
【问题讨论】:
-
如果您将
vehicle.mileage = [NSNumber numberWithInt:miles]替换为NSNumber *mileage = [NSNumber numberWithInt:miles],然后将NSLog(@"mileage = %@", vehicle.mileage);更改为NSLog(@"mileage = %@", mileage);,您将得到预期的结果:mileage = 35000,所以我认为问题出在mileagevehicle中的财产。检查它的二传手没有做一些时髦的事情。肯定是NSNumber类型的吗? -
没错,肯定是NSNumber类型——@property(nonatomic,retain)NSNumber * mileage;
-
This post 提供了答案。简单的错误,但很高兴知道。
标签: objective-c ios