我有一个核心数据托管对象,该对象的属性为“布尔”类型。
在我的头文件中,我得到了:
@属性(非原子,保留)NSNumber * includeInHistory;
我正在使用@dynamic includeInHistory实现
在保存到磁盘之前与该托管对象的实例进行交互时,我得到了一些实际上可以通过NSNumber接口映射到NSCFBoolean的东西。我正在使用“ json-framework”对一些包含来自Core Data的值的字典进行编码。
问题在于,在保存并取回数据之后,includeInHistory返回似乎是标准的NSNumber(整数,未键入为Boolean)。这是有问题的,因为当转换为JSON时,它映射为“ includeInHistory”:1而不是includeInHistory“:true
现在,我不得不取消装箱,然后在每次要导出为JSON时都重新装箱,但这对我来说似乎是个错误...。我在这里错过了什么吗?
谢谢
最佳答案
就Core Data而言,布尔值只是一个NSNumber,其值限制为0或1。CoreData希望接收控制器和/或查看代码能够正确显示它。
但是,由于无论如何都是NSManagedObject
的子类,所以我建议编写一个includeInHistoryValue方法,这些方法会自动进行装箱和拆箱。然后,您的JSON解析器将改为处理原始布尔值。
您可能还需要考虑使用Mogenerator,因为它将添加那些装箱和拆箱方法并自动为您维护子类。
关于iphone - 核心数据处理不当NSCFBoolean?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1492726/