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