我正在为我的问题简化这一点,但是,举个例子,假设我有一个名为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);
}
}
答案 0 :(得分:2)
这里的问题是NO
实际上只是0
的别名,它也代表nil
和NULL
。
由于将nil
分配给NSNumber
属性是完全有效的,因此编译器不会抱怨并且不将vacationing
设置为false,而是将其取消设置,这在以下情况下无效:属性是必需的。
将NO
替换为YES
会更明显,这将产生编译器警告。
要解决此问题,请将NO
替换为@NO
或[NSNumber numberWithBool:NO]
,而不是分配NSNumber
个实例。