【发布时间】:2011-03-24 06:11:33
【问题描述】:
我今天花了一些时间追查两个错误,并最终使用相同的解决方案修复了这两个错误。
现在我有了解决方案,我希望能弄清楚它的背后。
我正在将 Core Data (Integer 16/NSNumber) 中的一个属性与一个整数 (ABPropertyID & ABMultiValueIdentifier) 进行比较。
这个错误就在这个比较中,而且奇怪的是,只有在我(从后台托盘)杀死应用程序、重新打开它并运行包含比较的相同过程后才出现。总之……
这是重启后停止工作的原因:
if (myNumber.aProperty == [NSNUmber numberWithInt:anInteger]) { /* do stuff here */ }
这是目前为止运行良好的两种解决方案:
if ([myNumber.aProperty integerValue] == anInteger) {/* do stuff here */ }
if ([myNumber.aProperty isEqualToNumber:[NSNumber numberWithInt:anInteger]]) { /* do stuff here */ }
对我来说,它们看起来都一样。我总是要么将 NSNumber 转换为 integerValue,要么将整数转换为 NSNumber。
有什么想法吗?
【问题讨论】:
标签: iphone objective-c ios nsnumber nsinteger