我遇到了一个关于 CoreData 和 boolean 值的奇怪问题:
在我的数据模型中,我将一个实体的属性设置为 BOOL。后来我设置了 theEntity.theBooleanValue = [NSNumber numberWithBool:NO]
并保存了对象。到目前为止一切顺利,但是当我尝试使用 if ([theObject valueForKey:@"theBooleanValue"] == [NSNumber numberBOOL:NO]){//do something} 来检查已保存属性的值时
它永远不会跳入 if 子句。但是如果我检查 == [NSNumber numberWithInt:0]
它的工作...所以基本上我尝试保存一个 bool 但它被认为是一个 int ... 知道那里发生了什么吗?
最佳答案
对我来说,检查 [[theObject valueForKey:@"theBooleanValue"] boolValue]
更有意义。即,
if(![[theObject valueForKey:@"theBooleanValue"] boolValue])
{
// Your code
}
我认为 ==
运算符比较的是对象指针,而不是数字本身。要比较数字,有一个单独的方法 [NSNumber isEqualToNumber:]
。
关于objective-c - CoreData 对象无法识别 BOOL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9101548/