4

我想不出更好的方式来表达这个问题,所以让我澄清一下:

我在 Core Data 中存储了很多东西,其中一些是存储为二进制数据的图像。这些图像已设置为允许外部存储,这意味着,据我所知,Core Data 负责将这些图片存储在磁盘上的其他位置,而不是存储在数据库本身中(如果它们太大(> 1MB?))。我还尝试使用文件共享为此数据库构建一个简单的备份/恢复系统 - 单击“备份”将我的 .sqlite 文件从我的 Library 文件夹复制到我的 Documents 文件夹(使用不同的名称),允许用户通过 iTunes 访问(存储在任何地方),然后单击“恢复”在 Documents 文件夹中查找备份文件,删除 Library 文件夹中的活动 .sqlite 文件并将其替换为备份。

当从 Core Data 中删除图像时会出现问题,但是我想将我的数据库恢复到该图像仍然存在的时间。当我使用 Core Data 删除该图像时,我假设存储在数据库中的图像的路径和存储在其他地方的图像本身都被删除了。但是,当我通过带回 .sqlite 文件恢复旧数据库时,只存在图像的路径 - 图像本身存储在外部,因此无处可寻。

首先,这是在 Core Data 下备份和恢复数据库的合理方法,还是有明确的理由不应该通过来回复制底层 .sqlite 文件来解决这个问题?其次,任何人都可以就我如何允许 Core Data 处理外部存储同时仍然有办法备份这些图像提供建议吗?我意识到我可能可以手动存储图像,从而允许我将图像文件夹与我的 .sqlite 文件一起备份,但我确实喜欢让 Core Data 为我管理它的简单性,所以我只是想知道是否有任何更好的方法来做这个备份/恢复的事情。

4

0 回答 0