当模型中设置了默认值时,为啥我会得到“休假是必需的值”?
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
的别名,它也代表nil
和NULL
。
由于将nil
分配给NSNumber
属性是完全有效的,因此编译器不会抱怨,而是将vacationing
设置为false,而是将其取消设置,这在需要该属性时无效。
将NO
替换为YES
会更明显,这会产生编译器警告。
要解决此问题,请将NO
替换为@NO
或[NSNumber numberWithBool:NO]
以分配NSNumber
实例。
【讨论】:
以上是关于当模型中设置了默认值时,为啥我会得到“休假是必需的值”?的主要内容,如果未能解决你的问题,请参考以下文章
delphi:dbgrideh中设置了checkbox列,不能勾选
当视图模型中的状态发生变化时,为啥路由的 Composable 会重新组合?
《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集 (转)