将文件存储在文件系统与核心数据中

时间:2011-03-13 19:18:00

标签: ios core-data uiimage storage

我目前正在开发一个iOS应用程序,我允许用户将照片库中的图像添加到应用程序中。我将这些图像存储在设备文件系统中,并在需要时访问它们(当它们位于UIScrollView中时,我可以经常访问它们)

我只想对这种方法有所了解。我应该继续使用文件系统方法,还是将这些I图像存储在CoreData中是有益的。

对此有任何建议将不胜感激。

感谢。

3 个答案:

答案 0 :(得分:5)

我认为Core Data并不是真的用于存储此类数据。这样做在道德上等同于将图像数据存储到SQL /关系数据库中,这也是不理想的。

我有类似的情况,我有一堆图像存储在硬目标位置(我的图像列表永远不会更改,所以我只是将它们全部包含在应用程序包中)与Core Data存储包含大量有关的元数据图像。我保留在图像本身的核心数据中的所有内容都是文件名,然后在运行时最终时间查看图像时将完整文件路径混合在一起。我对延迟时间或延迟没有任何问题。

即使我没有在UIScrollView中显示图像,我仍然认为从Core Data存储中获取图像信息数组并在生成单元格时动态生成完整文件路径几乎没有问题。这些只是字符串,生成UIImage的代码非常紧凑。那个或生成相同的信息数组,然后在生成任何单元格之前编译图像路径数组,就像UIScrollView即将出现时一样。

答案 1 :(得分:3)

您应该将文件系统方法用于大于缩略图的任何内容。

首先,如果您在Core Data中存储,则必须存储它具有数据或可转换属性。在任何一种情况下,您都有一个额外的步骤来转换为图像。如果存储文件,则可以直接使用UIImage加载文件。

然而,主要问题是内存使用,故障图像不会像UIImage那样从内存中清除。

2012-9-20更新:这个答案现在已经过时了。 Core Data没有自己的系统来存储大量数据,例如外部文件中的图像。

答案 2 :(得分:0)

我认为将它们放入核心数据会很慢。文件系统会更快。