具有布尔属性的CoreData实体保存为NSNumber对象

Nia*_*pan 9 core-data nsmanagedobject ios

想知道是否有其他人遇到过这个问题,或者是否有原因并且我做错了什么.

我有一个CoreData应用程序.在模式中,我有一个'content'实体,其'unlocked'属性设置为Boolean.

但是,当我通过Xcode保存实体的Obj C类时,解锁在content.h中显示为:

@property (nonatomic, retain) NSNumber * unlocked;
Run Code Online (Sandbox Code Playgroud)

如果我在content.h中将其更改为布尔值,我会收到ARC编译错误.但是,如果我在尝试获取它时将其作为NSNumber对象保留,它会不一致地返回(如果我有一个NSLog打印它,它会在每次运行时返回不同的值).

我可以找出一个相当明显的解决方法,将解锁为NSString设置为"是"或"否"并在相关点进行比较,但我想知道是否有人知道为什么会发生这种情况或者是否有办法将它保持为布尔值.

提前致谢.

cee*_*kay 12

CoreData存储BOOL不存在的对象.

[NSNumber numberWithBool:YES]

是设置属性的方法,你可以通过阅读mybool = [content.unlocked boolValue]来使用它;

  • 您还可以使用文字语法来设置布尔核心数据属性:`object.boolAttribute = @ YES``object.boolAttribute = @ NO` (6认同)