Iphone 在岩心数据中保存照片

Iphone 在岩心数据中保存照片,iphone,objective-c,ios,core-data,Iphone,Objective C,Ios,Core Data,我正在尽可能以最有效的方式做这件事。想想苹果在iPhone上内置的地址簿——这就是我在这里试图复制的内容 一个实体,Person和多个属性,但每个Person可以有一张照片 为实体保存照片的最佳方式是什么 在我看来,保存照片或任何大型数据的最佳方法是将它们保存到文件中,并将文件路径作为字符串存储在核心数据实体中…在XCode中的托管对象模型文件(.momd)中,为Person实体添加一个属性,并将其类型设置为“Transformable”。在可转换属性中,可以存储符合NSCoding协议的任何类

我正在尽可能以最有效的方式做这件事。想想苹果在iPhone上内置的地址簿——这就是我在这里试图复制的内容

一个实体,
Person
和多个属性,但每个
Person
可以有一张照片


为实体保存照片的最佳方式是什么

在我看来,保存照片或任何大型数据的最佳方法是将它们保存到文件中,并将文件路径作为字符串存储在核心数据实体中…

在XCode中的托管对象模型文件(.momd)中,为Person实体添加一个属性,并将其类型设置为“Transformable”。在可转换属性中,可以存储符合
NSCoding
协议的任何类型的对象,幸运的是,
UIImage
就是其中之一。
有关NSCoding的更多信息,请参阅Apple文档:

在iOS 5.0+和Mac OS X 10.7+中,有一种全新的存储二进制数据和核心数据的方法
NSAttributeDescription
现在有一个名为
allowsExternalStorage
BOOL
属性

从文档中

如果该值为“是”,则相应的属性可能存储在 持久存储本身外部的文件

这意味着二进制数据将被持久化到磁盘,对该项的引用将由核心数据自动存储在持久化存储中。在Xcode模型编辑器中,只需在inspector视图中选中该属性的选项即可启用此功能



对于5.0之前的版本,您需要将图像保存到用户的文档目录中,然后在保存之前将文件URL添加到模型对象。

如果您必须支持4.x设备,这是一种方法。