我今天花了一些时间追查两个错误,并最终使用相同的解决方案修复了它们。
现在我有了解决方案,我希望能弄清楚它的背后。
我正在将核心数据(整数 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。
有任何想法吗?