当模型中设置了默认值时,为啥我会得到“休假是必需的值”?

Posted

技术标签:

【中文标题】当模型中设置了默认值时,为啥我会得到“休假是必需的值”?【英文标题】:Why do I get "vacationing is a required value" when it has a default value set in the model?当模型中设置了默认值时,为什么我会得到“休假是必需的值”? 【发布时间】:2012-11-08 01:22:31 【问题描述】:

我正在为我的问题简化这个,但是,例如,假设我有一个模型,它有一个名为 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】:

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

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

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

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

【讨论】:

以上是关于当模型中设置了默认值时,为啥我会得到“休假是必需的值”?的主要内容,如果未能解决你的问题,请参考以下文章

delphi:dbgrideh中设置了checkbox列,不能勾选

当视图模型中的状态发生变化时,为啥路由的 Composable 会重新组合?

《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集 (转)

为啥在css中设置了宽高缩小图片后,图片变得模糊

为啥当我在浏览器中设置代理时查尔斯没有捕获流量

为啥我会得到不同形状的张量错误?