核心数据对象上无法识别BOOL值

时间:2012-02-01 18:58:05

标签: objective-c ios core-data boolean nsnumber

我遇到了一个关于CoreData和布尔值的奇怪问题: 在我的数据模型中,我已将实体的属性设置为BOOL。后来我设置theEntity.theBooleanValue = [NSNumber numberWithBool:NO]并保存对象。到目前为止一切都那么好,但是当我尝试用if ([theObject valueForKey:@"theBooleanValue"] == [NSNumber numberBOOL:NO]){//do something}检查已保存属性的值时,它永远不会跳转到if子句。但是,如果我检查== [NSNumber numberWithInt:0]它的工作......所以基本上我试图保存一个bool,但它被认为是一个int ...任何想法在那里发生了什么?

2 个答案:

答案 0 :(得分:3)

为我检查[[theObject valueForKey:@"theBooleanValue"] boolValue]更有意义。即,

if(![[theObject valueForKey:@"theBooleanValue"] boolValue])
{
    // Your code
}

我认为==运算符会比较对象指针,而不是数字本身。为了比较数字,有一个separete方法[NSNumber isEqualToNumber:]

答案 1 :(得分:2)

请注意,这会让您的生活变得更加轻松,您可以宣布像

这样的属性
@property (nonatomic) BOOL theBooleanValue;

这将允许您使用

if (!theObject.theBooleanValue) {
    // Your code here
}

您可以直接指定

theObject.theBooleanValue = YES;