在核心数据中保存照片

时间:2011-12-16 20:33:55

标签: iphone objective-c ios core-data

我试图以最有效的方式做到这一点。想想Apple在iPhone上的内置地址簿 - 这就是我想在这里复制的内容。

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

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

3 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:8)

在iOS 5.0+和Mac OS X 10.7+中使用Core Data存储二进制数据有一种很棒的新方法。 NSAttributeDescription现在有一个名为BOOL的{​​{1}}属性。

来自文档......

  

如果该值为YES,则相应的属性可以存储在a中   永久存储本身外部的文件。

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

NSAttributeDescription Inspector - Allows External Storage


对于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