我有一个扩展 NSObject 的类。它由一些浮点变量组成。我想将此类存储在核心数据中。
在数据模型中,似乎最有可能的选择是将此类转为二进制数据,以便使用 CoreData 存储它。
这是正确的吗?如果是这样,有人可以指导我如何使用 CoreData 存储和检索我的类吗?
谢谢,
最佳答案
一种可以使自定义对象透明地保存和从 Core Data 加载的方法是使用 NSValueTransformer。如果您创建一个 NSValueTransformer,它可以从您的类转到 NSData,反之亦然,您可以将实体中对应于此类的属性标记为可转换。然后,Core Data 将允许您在处理此属性时设置和检索此类型的对象。
在我的回答中 here我展示了如何使用 UIImage 属性执行此操作的代码,Core Data 本身不支持这些属性。要为您的自定义对象执行此类操作,您需要使其符合 NSCoding 并实现您自己的 -encodeWithCoder:
和 -initWithCoder:
方法以将其序列化为用于存储的 NSData 实例。
Apple 在核心数据编程指南的“Non-Standard Persistent Attributes”部分提供了更多关于此的文档,包括使用 Mac 的 NSColor 类的示例。
关于ios - 如何使用 CoreData 存储自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7825171/