将图像存储在Core Data或文件中?

时间:2010-11-11 19:11:27

标签: core-data ios blob

我也有包含图像的数据集。我想缓存这些数据。我应该将它们存储在文件系统还是核心数据上?为什么?

3 个答案:

答案 0 :(得分:36)

有两个主要选项:

  1. 将文件存储在磁盘上,然后将核心数据的路径存储在核心数据中
  2. 将图像的二进制数据存储在核心数据中
  3. 我个人更喜欢第一个选项,因为它允许我选择何时在内存中加载实际图像。这也意味着我不必记住原始数据的格式;我可以使用alloc / initUIImage对象的路径。

答案 1 :(得分:16)

您可能希望从“核心数据编程指南”中了解如何处理二进制大对象(BLOB)的this。对于什么尺寸的二进制数据应该和不应该存储在实际的Core Data存储中,有经验法则。

您也可以查看Core Data iPad/iPhone BLOBS vs File system for 20k PDFs

如果确实在Core Data存储中放置了二进制数据,那么最好有一个“数据”实体来保存实际数据并将“Image”实体分开。在两个实体之间创建关系,以便只需在实际需要时加载“数据”。 “图像”实体可以保存元数据,例如标题,数据类型等。

答案 2 :(得分:0)

关于存储用户数据/文件的位置(我发现“应用程序支持”是一个不错的位置,因为我担心用户移动,删除或改变文件会以某种方式导致图像我的应用程序无法恢复和使用)

以Minecraft为例: 例如。 “〜/ Library / Application Support / minecraft / saves /”

我同意先前的注释和存储核心数据中图像的路径,但是否则将图像本身存储为核心数据之外的自己文件夹中的png文件。