dji*_*i33 5 iphone objective-c nsnumber nsinteger ios
我今天花了一些时间追逐两个错误,并最终使用相同的解决方案修复它们.
现在我已经找到了解决方案,我希望能够明白这一点.
我正在将Core Data(Integer 16/NSNumber)的属性与Integer(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.
有任何想法吗?
Bol*_*ock 11
不要==用来比较NSNumbers.大多数情况下,您将比较两个不同的对象,因此比较不会评估为真.如果您查看if条件,请注意您特别将您的财产与一个全新的 NSNumber对象进行比较.
因为NSInteger是某些值类型的Cocoa包装器,所以比较NSIntegers和==工作正常.
实现isEqualToNumber:可能采用包装的值类型并进行比较.
| 归档时间: |
|
| 查看次数: |
9865 次 |
| 最近记录: |