2012-11-08 21 views
1

我简化了这个问题,但作为一个例子,假设我有一个名为Employee的实体和一个名为vacationing的布尔属性,它是非可选的,但默认值为NO集。当模型中设置了默认值时,为什么会获得“度假是必需的值”?

但是,在尝试将更新保存到Employee实体时,我看到“休假是必需的值”。代码如下所示:

- (void)reinstateEmployee:(Employee*)employee context:(NSManagedObjectContext*)context { 
    employee.vacationing = NO; 

    NSError *error; 
    if (![context save:error]) { 
     NSLog(@"Error saving: %@", error.localizedDescription); 
    } 
} 

回答

2

的这里的问题是,NO实际上只是0这也代表nilNULL的别名。

因为它是完全有效的分配nil一个NSNumber属性,编译器不抱怨,而不是设置vacationing为假,将取消设置它,则需要属性时,这是无效的。

YES代替NO会更明显,这会产生编译器警告。

要修复此问题,请将NO替换为@NO[NSNumber numberWithBool:NO],以改为指定NSNumber实例。

相关问题