如何使用CoreData存储自定义类

use*_*994 9 core-data nsobject ios

我有一个扩展NSObject的类.它由一些浮点变量组成.我想将此类存储在核心数据中.

在数据模型中,似乎最可能的选择是将此类转换为二进制数据,以便使用CoreData存储它.

它是否正确?如果是这样,有人可以指导我如何使用CoreData存储和检索我的课程吗?

谢谢,

Bra*_*son 10

您可以使用NSValueTransformer从Core Data透明地保存和加载自定义对象的方法.如果您创建的NSValueTransformer可以从您的类转到NSData,反之亦然,您可以将实体中与此类对应的属性标记为可转换.然后,Core Data将允许您在处理此属性时设置和检索此类型的对象.

在我的回答中,我展示了如何使用UIImage属性执行此操作的代码,Core Data本身不支持这些属性.要为您的自定义对象执行类似的操作,您需要使其符合NSCoding并实现您自己的方法-encodeWithCoder:并将-initWithCoder:其序列化为NSData实例以进行存储.

Apple在" 核心数据编程指南" 的" 非标准持久属性 "部分中有更多关于此的文档,包括使用Mac的NSColor类的示例.


log*_*ell 0

我建议在核心数据中创建一个新实体,在新实体中对这些字段进行建模,并重构代码以使用托管对象的新自定义子类。