![](/img/trans.png)
[英]Convert attribute from NSNumber to NSString in CoreData Entity - LightWeightMigration
[英]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的表,你會看到他們存儲為整數,因此,您的轉換BOOL
到NSNumber
存儲之前和轉換NSNumber
到BOOL
(或只是我們作為-is 0/1)檢索時。
然而,我沒有看到任何不一致 - 如果存儲的NSNumber
為零,則它等於NO
,如果非零,則為YES
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.