我试图以最有效的方式做到这一点。想想Apple在iPhone上的内置地址簿 - 这就是我想在这里复制的内容。
一个实体Person
和多个属性,但每个Person
可以有一张照片。
为实体保存照片的最佳方法是什么?
答案 0 :(得分:11)
在我看来,保存照片或任何大数据的最佳方法是将它们保存到文件中,并将文件路径存储为核心数据实体中的字符串...
答案 1 :(得分:8)
在iOS 5.0+和Mac OS X 10.7+中使用Core Data存储二进制数据有一种很棒的新方法。 NSAttributeDescription
现在有一个名为BOOL
的{{1}}属性。
来自文档......
如果该值为YES,则相应的属性可以存储在a中 永久存储本身外部的文件。
这意味着二进制数据将持久保存到磁盘,并且对该项的引用将由Core Data自动存储在持久性存储中。在Xcode模型编辑器中,只需在检查器视图中检查该属性的选项即可启用此功能。
对于5.0之前的版本,您需要将图像保存到用户的Documents目录,然后在保存之前将文件URL添加到模型对象。
答案 2 :(得分:1)
在XCode中的托管对象模型文件(.momd)中,向Person实体添加属性并将其类型设置为“Transformable”。在可转换属性中,您可以存储符合NSCoding
协议的任何类型的对象,幸运的是,UIImage
就是其中之一。
有关NSCoding的详细信息,请参阅Apple文档:http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Protocols/NSCoding_Protocol/Reference/Reference.html#//apple_ref/occ/intf/NSCoding