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

问题描述 投票:32回答:3

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

core-data ios blob
3个回答
36
投票

有两个主要选择:

  1. 将文件存储在磁盘上,然后将映像的路径存储在核心数据中
  2. 将图像的二进制数据存储在核心数据中

我个人更喜欢第一种选择,因为它允许我选择何时在内存中加载实际图像。这也意味着我不必记住原始数据的格式;我可以使用alloc / init这个新的UIImage对象的路径。


16
投票

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

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

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.