我正在我的基于核心数据的应用程序中实现 iCloud 支持。它运行良好,但我注意到在您首次运行该应用程序的设备上出现了奇怪的行为。
我在设备 A 上运行应用程序并添加一些条目。我在设备 B 中安装应用程序,从调试中我看到:
2013-12-02 18:25:39.626 My App[256:3707] -[PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:](754): CoreData: Ubiquity: mobile~XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX:myawesomeapp
Using local storage: 1
大约几分钟后:
2013-12-02 18:26:26.234 My App[256:1803] -[PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:](754): CoreData: Ubiquity: mobibile~XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX:myawesomeapp
Using local storage: 0
并且我的所有条目都出现在设备 B 中
在此期间,应用程序没有响应。没有崩溃,但我可以触摸任何地方,但应用程序没有响应。在存储切换和所有数据出现后,该应用程序完美运行。
现在的问题是:有一种方法可以告诉用户“等等,我正在检查 iCloud 并检索数据”
而且,我注意到只有在 iOS7 设备上运行该应用程序时才会显示上述调试消息。如果我在 iOS 6.x 上运行它,我不知道发生了什么。
谢谢, 最大
最佳答案
查看 WWDC 2013 Video Session about Core Data (需要开发者帐户)。这在第 7 分钟左右开始解释得很好。
它明确指出,第一次获取 iCloud 数据是同步的,因此您必须确保在单独的非 UI 线程中调用它。在 iOS 7 中,这应该是自动异步的。
如果重构 iOS 7 以利用新的(更简单的)API,这可能是最好的选择。您可以在代码中设置一个开关,并根据设备运行的操作系统使用这两种方法。
消息 Using local storage: 0/1
在第 6 分钟左右解释。
关于ios - 应用程序从本地存储切换到远程存储时的 iCloud 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20334447/