在iPhone上的Core Data中存储大型(例如图像/电影)文件

Sim*_*ide 4 iphone core-data

查看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建议是使用单独的文件....

Lou*_*arg 10

这取决于.CoreData能够存储具有良好性能的大blob.最大的问题是:

  1. 如果这些blob是可能并非总是出现故障的实体的属性,则需要小心确保无论何时使用该实体,都要告知CD在属性中没有错误,直到您提出要求为止.您可以通过隔离自己实体中的blob来解决这个问题,在通过关系访问它之前不会出现故障.
  2. 您的持久存储是一个单片文件,这意味着如果其中的任何内容发生更改,则需要在备份期间复制整个文件.这通常会增加手机在与iTunes同步时备份所需的时间,因为您更改了一些元数据,现在它必须复制每个图像.

    第一个问题通常不是什么大问题,你只需要小心.如果数据是有效的只读,则第二个不是问题,但如果您的持久存储中有几百兆字节的数据,则可能是非常糟糕的用户体验.