我的核心数据中有一个BOOL。 我希望该值为null,除非我将其设置为YES或NO。 是否有可能做到这一点? 在我的代码中,我如何检查是否尚未设置该值?
在我的nsmanagedObject中,我使用NSNumber作为我的BOOL,在我的核心数据mdoel中我有BOOL。
答案 0 :(得分:5)
CoreData允许您设置默认值。 Bool可以包含“YES”,“NO”,“None”。 将默认值设置为“None”会使返回值为“null”,这正是我所需要的。
答案 1 :(得分:2)
如果在模型中将布尔值设置为属性类型,则意味着它将使用NSNumber
实现。
我不确定为什么你不想返回任何值而不是NO
,我实际上建议你不要。如果您只设置一个错误的默认值,那么数据完整性会更容易。
但是,如果您绝对坚持,您只需检查该属性是否为nil
,以查看它是否已分配了值。
答案 2 :(得分:0)
正确的答案是肯定的,使用'是''不'和不同的'无'是有实际意义的,这意味着数据是完整的。在核心数据中,有时候有理由检查“无”,特别是如果您想调试数据库。在核心数据中,您可以使用:
[myManagedObject setValue: nil forKey:@"attributeOfMyManagedObject"];
如果在核心数据后面检查SQL数据库,如果使用默认设置,则会看到“NULL”。