我正在推动iOS应用程序更新 - 自iOS 7以来,它没有受到太多关注。
我发现以下比较:
tail
当[selectedFile valueForKey:@"canTransferToExternalApp"] == [NSNumber numberWithInt:1]
返回的值为1时,返回false。过去,返回true。发生了什么变化?
答案 0 :(得分:2)
你需要避免使用NSObjects的相等运算符,作为回答比较相关问题的人的参考。
https://stackoverflow.com/a/1319280/933887
这里的问题是你要比较内存地址,而不是对象的值。您可以在此处阅读有关对象比较的更多信息:Introspection
总之,以下是一个很好的解决方案:
[[selectedFile valueForKey:@"canTransferToExternalApp"] isEqual:[NSNumber numberWithInt:1]]
您可以使用isEqualToNumber:
但是您需要确保比较NSNumbers而不是其他任何东西。所以为了安全起见,我建议坚持使用isEqual:
答案 1 :(得分:0)
希望它有效
int
尝试在NSString
或NSManagedObjects
中使用相同的比较
如果 NSManagedObjects 不直接比较值,则首先将NSDictionary
转换为NSArray *keys = [[[selectedFile entity] attributesByName] allKeys];
NSDictionary *dict = [myObject dictionaryWithValuesForKeys:keys];
[NSNumber numberWithInt:[dict[@"canTransferToExternalApp"]]] isEqualToNumber [NSNumber numberWithInt:1]
.....
例如:
{{1}}