如何将 Core Data 与引用的文件同步?

Posted

技术标签:

【中文标题】如何将 Core Data 与引用的文件同步?【英文标题】:How to sync Core Data with referenced files? 【发布时间】:2013-02-21 06:34:42 【问题描述】:

刚开始阅读有关如何使用 iCloud 同步文件或核心数据的各种帖子。我目前正在开发的应用程序将数据存储在核心数据和文件名中,作为对存储在文档应用程序沙箱中的图像文件的引用。因此,每次用户在数据库中进行记录时,也会在文档目录中创建一个相关文件(照片)。

如果我们需要同步文件或核心数据,一切看起来都很好,但是我正在寻找一种如何同步核心数据和文件的方法。所以,我担心新的核心数据记录是否会比这些记录的图像文件更早到达。在这种情况下,数据完整性将被破坏。实际上,我希望所有新的相关文件首先出现,然后是所有核心数据更新。有可能吗?

【问题讨论】:

【参考方案1】:

不是真的,不。您将数据发送到云端,但您无法控制它何时出现在其他设备上。无论外部文件的状态如何,iCloud 都会在需要时将您的托管对象带入。实现这一点的唯一方法是查找并下载任何外部文件,等待下载完成,然后才调出您的 Core Data 堆栈。但这意味着在下载完成之前将用户锁定在数据存储之外,这不是一个好主意。

当我遇到类似情况时,我是这样处理的:

开始下载所有外部文件并启动 Core Data 堆栈。 修改图片的getter方法,检查文件是否存在,是否已经下载。 如果两者都是,则正常进行 如果不是,则显示“正在加载...” UI 元素。这可以是微调器或进度指示器。收听自定义“下载完成”通知。 每当外部文件完成下载时,发布“下载完成”通知。重新检查文件,如果准备好了,将“正在加载...”UI 替换为图片。

【讨论】:

以上是关于如何将 Core Data 与引用的文件同步?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQLite 文件预加载 Core Data,该文件引用使用“外部存储”保存的图像?

将 Core Data XML 存储同步到磁盘

将数据与 Core Data 同步

Swift 3 Core Data - 如何同步保存上下文?

如何在 Swift 中将 Core Data 与 Cloudkit 和许多设备同步

在 iOS 7 中禁用 Core Data 中的 iCloud(也就是将持久存储文件迁移到本地)