2010-11-18 78 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'。