首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swift中实现核心数据的NSValueTransformer

如何在Swift中实现核心数据的NSValueTransformer
EN

Stack Overflow用户
提问于 2016-07-15 16:48:01
回答 1查看 1.2K关注 0票数 0

我正在尝试将实体放在每个具有非标准数据类型的核心数据存储中--一个是NSDocument,另一个是NSURL。我知道,在.xcdatamodeld中,我需要声明它们是可转换的。我认为我需要添加一些实现NSValueTransformer的东西来将它们转化为NSData (.或者是否有一个默认的变压器可以自动完成这一任务?)

我认为这个问题应该简单地回答:我应该在哪里实现它?我还没有在Swift中找到这样做的明确例子。虽然有一个目标-C示例,但是.h和.m文件的分离使我不清楚这在Swift中的去向。

假设我有一个名为Notebook的实体类型,在数据库中有一个名为folderURL - of类型可转换的属性,在实际变量中有一个名为NSURL的类型。(我用它作为示例,因为它比较简单--请不要告诉我只将NSURL转换为字符串,因为这对另一个可转换的字符串不起作用。)

问题是:假设我需要NSValueTransformer for folderURL,我该把它放在哪里?笔记本应该实现它吗?Notebook+CoreDataProperties应该吗?或者我需要一个名为FolderURL的单独子类来实现它,如果需要,我如何在笔记本(和/或Notebook+CoreDataProperties)中引用这个子类?

(前面有一个关于相似标题的问题,但他们似乎已经有了一些更深入的问题--他们没有询问或演示“哪里”。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-15 17:29:29

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

但是,,是一个默认的转换器。任何采用NSCoding协议的类都可以通过核心数据进行自动转换。在这种情况下,您可以将属性标记为可转换的,但不包括类名。这包括NSURL,因此不需要将其转换或转换为字符串。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38401329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档