我正在为 UIManagedDocument 开发一个轻量级包装器,它管理一个人的 iCloud 帐户中是否存在多个文档。请参阅:APManagedDocument
我在很大程度上依赖于 iOS 7 中后备存储的使用,并且尽可能少地关心 iCloud 的当前状态。因此,根据我对 WWDC 2013 Video - Session 207 What's New in Core Data and iCloud 的理解,让核心数据在后备存储方面做最好的事情
首先快速概述一下我的经理是如何工作的:我UIManagedDocuments
在本地沙箱中创建所有我的并设置适当的持久存储选项以启用 iCloud 同步。我从不将UIManagedDocument
包从沙箱中移出。
- 当我想知道云中存在哪些文档时,我会执行元数据查询。
- 当我想打开其中一个文档时,我首先检查它是否存在于本地沙箱中,如果不存在则在本地沙箱中创建它。(这就要求应用需要等待
Using local storage: 0
消息对应的通知。) - 有了这个设置,我永远不需要知道 iCloud 是否启用或登录。我只是在本地工作,让核心数据通过 iCloud 完成它的工作。
到目前为止,一切都很好,但我遇到了用户在登录 iCloud 之前创建新文档的场景,我遇到了以下问题:
- 我无法执行元数据查询,因为没有 iCloud 可供查询。
- 由于 1 我不得不回退到进行智能本地扫描,以查找路径中包含“local/store/persistentStore”的包并将其列为有效文档。
- 后来当用户登录时,我的理解是核心数据会将我的本地存储数据移动到云端,但我没有看到。相反,我看到的是为 iCloud 帐户创建了一个新的持久存储,并且没有数据。
我最大的问题是,当涉及到本地后备商店时,正确的方法是什么?我的假设哪里错了?
这是我发布 iOS 7 更新所需的最后一部分。任何和所有反馈将不胜感激,并将反映在我的 github 项目中,以便其他人可以从我的错误中学习。
我在 Apple Developer Forums 中有此问题的副本。我会用我从那里得到的任何发现来更新这个线程。我认为这个问题很重要,并且随着 iOS 7 的发布仍未解决。后备存储是 iCloud 技术的巨大进步,但本地存储部分仍然有点不确定。