ios - 如何使用 CoreData 存储自定义类

标签 ios core-data nsobject

我有一个扩展 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/

相关文章:

ios - 在 Xamarin.iOS (iOS 7) 中检测耳机插孔的插入和拔出事件

objective-c - iOS,使用 RestKit 搜索远程服务器

objective-c - 无法在 NSObject 子类中使用私有(private)方法

iphone - 如何在 ios sdk 中增加和减少带有动画的图像 alpha 值?

iphone - 强制后台应用程序在 iOS 模拟器中终止

ios - 不受信任的 SSL 证书链。拒绝与 PayPal 服务器通信 - iOS

swift - 预填充 .sqlite 的核心数据 (Swift3)

objective-c - 核心数据或 NSUserDefaults 以避免操纵用户?

ios - swift - `NSUnknownKeyException` : calling `setValue:forKey` on NSObject with optional values in dictionary

Objective-C id 和 NSObject