【问题标题】:Example of Custom Class on the Transformable property of Core DataCore Data 的 Transformable 属性上的自定义类示例
【发布时间】:2017-01-08 04:14:23
【问题描述】:

在核心数据上创建Transformable 属性时,通常将NSValueTransformer 代码添加到实体的类中,并将其名称填写在数据模型检查器的Value Transformer 字段中,但是Custom Class 呢?场地?该领域的目的是什么?能举个简单的例子吗?

【问题讨论】:

    标签: ios objective-c core-data


    【解决方案1】:

    “自定义类”控制当 Xcode 在NSManagedObject 上生成 / 扩展的子类时该属性会发生什么。如果您将此字段留空,您的snapshot 字段将被声明为NSObject。如果你填写一个类名,Xcode 会将该属性声明为你输入的任何类名。

    实际上,这意味着如果您将snapshot 设为可转换,将该字段留空,然后Xcode 为您生成一个子类,该属性将被声明为:

    @NSManaged public var snapshot: NSObject?
    

    另一方面,如果您填写该字段,例如在此处键入UIImage,那么当 Xcode 生成子类时,该属性将被声明为:

    @NSManaged public var snapshot: UIImage?
    

    填写类名允许编译器检查您的分配,例如,如果属性是UIImage,您就不会错误地尝试为其分配NSData

    更新:如果您使用的是 Swift,您还需要在属性配置中的“模块”字段中添加一个值,就在“自定义类”下方。对于此处的 snapshot 属性,请执行以下操作:

    执行此操作时,生成的源代码将包含import UIKit,以便代码编译。感谢@grego 在评论中指出这一点。

    【讨论】:

    • 什么?你的解释融化了我的大脑。我一个字都听不懂... ? 想扩大您的答案,添加示例等吗?谢谢。
    • 扩展,添加了更多细节。
    • 好的,我明白你的扩展解释,谢谢,但我不明白的是:当我定义转换器时,我必须将它声明为NSValueTransformer。好的,那是NSObject 的子类,但我不明白变压器类是如何成为 UIImage 的......(??!)
    • 不是变压器类。它是 NSManagedObject 子类中该属性的类型。
    • 这个字段与你的值转换器没有任何关系。它只是关于如何声明snapshot 属性。这是一种告诉 Xcode 在变量声明中使用什么类型的方法。至于代码,我给出的例子说明了差异。关于这些声明有何不同,您“没有得到”什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多