【发布时间】:2017-01-08 04:14:23
【问题描述】:
在核心数据上创建Transformable 属性时,通常将NSValueTransformer 代码添加到实体的类中,并将其名称填写在数据模型检查器的Value Transformer 字段中,但是Custom Class 呢?场地?该领域的目的是什么?能举个简单的例子吗?
【问题讨论】:
标签: ios objective-c core-data
在核心数据上创建Transformable 属性时,通常将NSValueTransformer 代码添加到实体的类中,并将其名称填写在数据模型检查器的Value Transformer 字段中,但是Custom Class 呢?场地?该领域的目的是什么?能举个简单的例子吗?
【问题讨论】:
标签: ios objective-c core-data
“自定义类”控制当 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 在变量声明中使用什么类型的方法。至于代码,我给出的例子说明了差异。关于这些声明有何不同,您“没有得到”什么?