簡體   English   中英

具有布爾屬性的CoreData實體保存為NSNumber對象

[英]CoreData entity with Boolean attribute being saved as an NSNumber object

想知道是否有其他人遇到過這個問題,或者是否有原因並且我做錯了什么。

我有一個CoreData應用程序。 在模式中,我有一個'content'實體,其'unlocked'屬性設置為Boolean。

但是,當我通過Xcode保存實體的Obj C類時,解鎖在content.h中顯示為:

@property (nonatomic, retain) NSNumber * unlocked;

如果我在content.h中將其更改為布爾值,我會收到ARC編譯錯誤。 但是,如果我在嘗試獲取它時將其作為NSNumber對象保留,它會不一致地返回(如果我有一個NSLog打印它,它會在每次運行時返回不同的值)。

我可以找出一個相當明顯的解決方法,將解鎖為NSString設置為“是”或“否”並在相關點進行比較,但我想知道是否有人知道為什么會發生這種情況或者是否有辦法將它保持為布爾值。

提前致謝。

CoreData存儲BOOL不存在的對象。

[NSNumber numberWithBool:YES]

是設置屬性的方法,你可以通過閱讀mybool = [content.unlocked boolValue]來使用它;

布爾值將被存儲像NSNumbers在核心數據(如果你看看你的sqlite的表,你會看到他們存儲為整數,因此,您的轉換BOOLNSNumber存儲之前和轉換NSNumberBOOL (或只是我們作為-is 0/1)檢索時。

然而,我沒有看到任何不一致 - 如果存儲的NSNumber為零,則它等於NO ,如果非零,則為YES

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM