当模型中设置了默认值时,为什么“假期是必需值”?

时间:2012-11-08 01:22:32

标签: objective-c core-data

我正在为我的问题简化这一点,但是,举个例子,假设我有一个名为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);
    }
}

1 个答案:

答案 0 :(得分:2)

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

由于将nil分配给NSNumber属性是完全有效的,因此编译器不会抱怨并且不将vacationing设置为false,而是将其取消设置,这在以下情况下无效:属性是必需的。

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

要解决此问题,请将NO替换为@NO[NSNumber numberWithBool:NO],而不是分配NSNumber个实例。