2

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

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

4

1 回答 1

2

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

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

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