今天我花了一些时间追踪两个错误,并最终用相同的解决方案解决了它们。
既然我有了解决方案,希望能得到一些清晰的理解。
我正在将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,要么将integer转换为NSNumber。
有任何想法吗?