如何使用参考文件同步核心数据?

问题描述:

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

如果我们需要同步文件或核心数据,一切看起来都很好,但是我正在寻找一种方式来同步核心数据和文件。所以,如果新核心数据记录早于这些记录的图像文件到达,我很担心这种情况。在这种情况下,数据完整性将被打破。实际上,我宁愿所有新的相关文件都会先到达,然后再进行所有核心数据更新。有可能这样做吗?

不是,没有。您将数据发送到云端,但无法控制何时出现在其他设备上。无论外部文件的状态如何,iCloud都会随时为您提供托管对象。你可以做到这一点的唯一方法是找到并下载任何外部文件,等待下载完成,然后才能启动Core Data堆栈。但这意味着将用户从数据存储锁定到下载完成,这不是一个好主意。

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

  • 启动所有外部文件的下载和调出核心数据堆栈。
  • 修改图像的getter方法以检查文件是否存在并且已经下载。
    • 如果对两者都是,则正常执行
    • 如果否,则显示“加载...”UI元素。这可能是一个微调或进度指示器。收听定制的“下载完成”通知。
  • 每当外部文件完成下载时,发布“下载完成”通知。重新检查文件,如果它已准备就绪,请用图像替换“loading ...”UI。