【问题标题】:Core Data mishandles NSCFBoolean?核心数据处理不当 NSCFBoolean?
【发布时间】:2010-12-02 08:08:30
【问题描述】:

我有一个 Core Data 托管对象,它有一个“布尔”类型的属性。

在我的头文件中,我有这个: @property (nonatomic, 保留) NSNumber * includeInHistory;

我正在使用@dynamic includeInHistory 实现

在保存到磁盘之前与此托管对象的实例进行交互时,我得到了一些实际上通过 NSNumber 接口映射到 NSCFBoolean 的东西。我正在使用“json-framework”对一些包含来自 Core Data 的值的字典进行编码。

问题在于,在保存并取回数据后,includeInHistory 会返回看似标准的 NSNumber(整数,而不是布尔值)。这是有问题的,因为当转换为 JSON 时,它映射到 "includeInHistory" : 1 而不是 includeInHistory" : true

现在,我不得不求助于拆箱,然后每次我要导出为 JSON 时重新装箱,但这对我来说似乎是一个错误......我在这里遗漏了什么吗?

谢谢

【问题讨论】:

    标签: iphone cocoa core-data boolean json-framework


    【解决方案1】:

    就 Core Data 而言,布尔值只是一个 NSNumber,其值限制为 0 或 1。Core Data 期望接收控制器和/或视图代码正确显示它。

    但是,既然您无论如何都在继承 NSManagedObject,那么我建议您编写一个 includeInHistoryValue 方法来自动进行装箱和拆箱。然后您的 JSON 解析器将改为处理原始布尔值。

    您可能还想考虑使用 mogenerator,因为它会自动添加那些装箱和拆箱方法并为您维护您的子类。

    【讨论】:

      【解决方案2】:

      听起来 JSON 框架无法识别您的号码是布尔类型。我认为这是一个错误;我建议你report it

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多