我有一组包含图像的数据。我想缓存这些数据。我应该将它们存储在文件系统还是核心数据上?为什么?
有两个主要选择:
我个人更喜欢第一种选择,因为它允许我选择何时在内存中加载实际图像。这也意味着我不必记住原始数据的格式;我可以使用alloc
/ init
这个新的UIImage
对象的路径。
您可能需要阅读“核心数据编程指南”中有关如何处理二进制大对象(BLOB)的this。对于什么尺寸的二进制数据应该和不应该存储在实际的Core Data存储中有经验法则。
你也可以看看Core Data iPad/iPhone BLOBS vs File system for 20k PDFs
如果您确实在Core Data存储中放置二进制数据,那么最好有一个“数据”实体来保存实际数据并将“Image”实体分开。在两个实体之间创建关系,以便只需在实际需要时加载“数据”。 “图像”实体可以保存元数据,例如标题,数据类型等。
关于存储用户数据/文件的位置(我发现“应用程序支持”是一个不错的位置,因为我担心用户移动,删除或更改文件会导致图像无法移动待我的申请恢复和使用)
以Minecraft为例:例如。 “〜/ Library / Application Support / minecraft / saves /”
我同意先前的注释和存储核心数据中图像的路径,但是否则将图像本身作为png文件存储在核心数据之外的自己的文件夹中。