【问题标题】:Creating a UIManagedDocument and the initial iCloud sync创建 UIManagedDocument 和初始 iCloud 同步
【发布时间】:2012-05-25 14:49:10
【问题描述】:

我正在将 iCloud 同步添加到我的应用中。我的UIManagedDocument 存储在沙箱中,其更改日志在 iCloud 中(由NSPersistentStoreUbiquitousContentURLKey 指定)。问题是,当我在 2nd 设备上第一次安装并运行该应用程序时,初始同步需要很长时间(以提取由第一台设备创建的更新)。这是一个真正的问题,因为同步显然发生在UIManagedDocument:saveToURL:completionHandler 内部。所以完成处理程序块需要很长时间才能被调用,如果我在UIManagedDocument:saveToURL 返回之前访问我的UIManagedDocument,我会遇到崩溃,这是可以理解的。

我想快速打开数据库,然后然后在后台进行同步。我该怎么做?

【问题讨论】:

    标签: ios core-data ios5 icloud uimanageddocument


    【解决方案1】:

    是的,第二台设备上的初始同步可能需要 90 秒或更长时间 (iOS 7)。我有一个创建 UIManagedDocument 实例的 iOS 7 应用程序的工作开源示例。请参阅:https://github.com/DonBriggs/MultiDocumentPlusUUID。首先,查看在两台设备上运行的应用程序的屏幕截图。如果屏幕截图解决了您的问题,您可以自己尝试该应用程序并查看代码。我渴望得到反馈。

    【讨论】:

    • 谢谢唐,我会检查你的项目!
    【解决方案2】:

    您提到“数据库”并用 CoreData 标记了这个问题。但是,您指的是 UIManagedDocument,它的同步方式与 CoreData 数据库不同。如果您的数据库是 CoreData,您将使用新的 NSManagedObjectContext 并发 API 对其进行初始化。看看:

    [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
    

    我已经成功地使用它来异步同步 CoreData 数据库,但我不确定它对 UIManagedDocuments 的应用效果如何。

    【讨论】:

    • 我不确定您所说的 UIManagedDocument 与 CoreData 数据库的同步方式不同是什么意思。 UIManagedDocument 的目的是简化 CoreData 存储访问(请参阅developer.apple.com/library/ios/#documentation/UIKit/Reference/…)。您的解决方案似乎并不直接适用,因为使用 UIManagedDocument 您不会自己初始化 NSManagedObjectContext。
    猜你喜欢
    • 2012-05-06
    • 2013-03-04
    • 2011-12-22
    • 2012-04-10
    • 2014-05-03
    • 2016-01-27
    • 2012-09-27
    • 2016-09-18
    • 1970-01-01
    相关资源
    最近更新 更多