1

我正在为我的问题简化这一点,但是,例如,假设我有一个模型,该模型具有一个名为的实体Employee和一个名为的布尔属性vacationing,该属性是非可选的,但具有NOset 的默认值。

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

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

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

1 回答 1

3

这里的问题是,NO它实际上只是一个别名,0它也代表niland NULL

由于分配nilNSNumber属性是完全有效的,因此编译器不会抱怨,而是设置vacationing为 false,而是取消设置,这在需要属性时无效。

这通过替换 更明显NOYES这将产生编译器警告。

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

于 2012-11-08T01:22:31.717 回答