2016-07-15 49 views
0

我试图把实体核心数据存储,每一个具有非标准数据类型 - 一种是NSDocument,另一个是一个NSURL。我在.xcdatamodeld中得到了,我需要将它们声明为Transformable。我想需要补充一点,就是实现NSValueTransformer把它们变成NSData的在哪里实施NSValueTransformer的核心数据在斯威夫特

我觉得这个问题应该是简单的回答(...或者是有一个默认的变压器,将自动做到这一点?):其中我执行它?我还没有在Swift中找到一个明确的例子。有一个Objective-C example,但是.h和.m文件的分离使得我不清楚这会在Swift中发生。

假设我有一个名为笔记本采用所谓folderURL的属性的实体类型 - 在实际变量类型的数据库可转换的,和类型NSURL的。 (我使用它作为例子,因为它更简单 - 请不要告诉我只是将NSURL转换为字符串,因为这不适用于其他Transformable。)

问题是:where我是否把folderVL的NSValueTransformer,假设我需要一个? Notebook应该执行它吗?应该Notebook + CoreDataProperties?或者我是否需要一个名为FolderURL的单独子类来实现它,如果是这样,我如何在Notebook(和/或Notebook + CoreDataProperties)中引用该子类?

(有一个similar title前面一个问题,但他们似乎比这已经得到了远一点已经 - 他们不问或证实有关“何处”)

回答

1

“去哪儿”只是您项目中的任何地方。确保您的NSValueTransformer子类在运行时存在的任何位置。实施NSValueTransformer子类,并在核心数据模型中输入类名作为值转换器。

然而,有默认的变压器。核心数据可以自动转换任何采用NSCoding协议的类。在这种情况下,您将该属性标记为可转换的,但不包括类名称。这包括NSURL,所以你不需要转换它或将其转换为字符串。

对于您的NSDocument子类,则可以选择在类中实现NSCoding或为文档类型实现NSValueTransformer子类。