NSManagedObject编号比较失败

时间:2016-02-05 06:29:33

标签: ios objective-c nsmanagedobject

我正在推动iOS应用程序更新 - 自iOS 7以来,它没有受到太多关注。

我发现以下比较:

tail
[selectedFile valueForKey:@"canTransferToExternalApp"] == [NSNumber numberWithInt:1] 返回的值为1时,

返回false。过去,返回true。发生了什么变化?

2 个答案:

答案 0 :(得分:2)

你需要避免使用NSObjects的相等运算符,作为回答比较相关问题的人的参考。

https://stackoverflow.com/a/1319280/933887

这里的问题是你要比较内存地址,而不是对象的值。您可以在此处阅读有关对象比较的更多信息:Introspection

总之,以下是一个很好的解决方案:

[[selectedFile valueForKey:@"canTransferToExternalApp"] isEqual:[NSNumber numberWithInt:1]]

您可以使用isEqualToNumber:但是您需要确保比较NSNumbers而不是其他任何东西。所以为了安全起见,我建议坚持使用isEqual:

答案 1 :(得分:0)

希望它有效

int

尝试NSStringNSManagedObjects中使用相同的比较

如果 NSManagedObjects 不直接比较值,则首先将NSDictionary转换为NSArray *keys = [[[selectedFile entity] attributesByName] allKeys]; NSDictionary *dict = [myObject dictionaryWithValuesForKeys:keys]; [NSNumber numberWithInt:[dict[@"canTransferToExternalApp"]]] isEqualToNumber [NSNumber numberWithInt:1] ..... 例如:

{{1}}