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