查看Apple iPhone Core Data Recipes示例应用程序,它们将图像文件存储在核心数据对象中,这通常不是我认为明智的。现在我也将在3GS上捕捉视频故事。问题是:在iPhone上的Core Data中存储图像,然后是电影是否明智?
此外还有加载到内存中。显然,食谱中使用的设计(即,将图像存储在单独的模型中)允许Core Data执行“错误”(听起来像是延迟加载),但我不确定这是否真的如此。
看这里:http://developer.apple.com/iPhone/library/documentation/Cocoa/Conceptual/CoreData/Articles/cdPerformance.html#//apple_ref/doc/uid/TP40003468-SW5似乎通用的Cocoa建议是使用单独的文件....
答案 0 :(得分:10)
这取决于。 CoreData能够存储具有良好性能的大blob。最大的问题是:
您的持久存储是一个整体文件,这意味着如果其中的任何内容发生更改,则需要在备份期间复制整个文件。这通常会增加手机在与iTunes同步时备份所需的时间,因为您更改了一些元数据,现在它必须复制每张图像。
第一个问题通常不是什么大问题,你只需要小心。如果数据是有效的只读,则第二个不是问题,但如果您的持久存储中有几百兆字节的数据,则可能是非常糟糕的用户体验。
答案 1 :(得分:0)
请参阅我的回答:
Can I access the files used for external binary storage in Core Data?
您现在可以使用“允许外部存储”选项将大型文件存储在Core Data中。唯一的问题是不再能够通过路径访问实际文件了。我提出了一个“创造性”的解决方案(无论是最好的做法都是猜测),但它允许您使用Core Data来管理文件,同时仍然能够通过路径访问REAL文件。