2010-11-18 60 views
3

我在我的核心数据中有一个BOOL。 我想要的值为空,除非我将它设置为YES或NO。 可以做到这一点吗?我的代码中的 如何检查值是否尚未设置?iPhone - 核心数据布尔值?

在我nsmanagedObject我使用NSNumber为我的BOOL,在我的核心数据mdoel我有布尔。

回答

5

CoreData允许您设置默认值。 Bool可以包含“是”,“否”,“无”。 将默认值设置为“无”会使返回的值为“null”,这正是我所需要的。

+0

这就是我也在想的。在我的情况下,我有一个hasChildren属性的节点。如果它是None,这意味着我需要查询服务器以检查该节点是否有子节点,Yes和No意味着我肯定知道它是否有子节点。 – Sushant 2011-06-01 11:11:55

3

如果您在模型中将布尔值设置为属性类型,那意味着它将使用NSNumber实施。

我不确定为什么你不想返回值而不是NO,我实际上建议你不要。如果您只设置一个默认的默认值,那么数据完整性将更容易。

但是,如果您绝对坚持,您可以检查该属性是否为nil,或者查看是否为其指定了值。

+4

在许多使用案例中,NO和“未设置”之间存在差异。 – 2010-11-18 21:08:58

+1

我意识到有一个区别。我以前去过那里,必然会引入完整性问题。我认为有更好的方法,比如使用-1,0或1的整数。 – 2010-11-18 22:14:21

+1

我同意。 -1,0和1是更好的解决方案 – griotspeak 2010-11-18 22:27:05

0

正确的答案是肯定的,并且使用“是”“否”和不同的“无”意味着数据是完整的。在核心数据中,有时很有理由检查'没有',特别是如果你想调试一个数据库。在核心数据中,您可以使用:

[myManagedObject setValue: nil forKey:@"attributeOfMyManagedObject"]; 

如果您在核心数据后面检查SQL数据库,那么如果使用默认设置,将会看到'NULL'。