1

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

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

4

2 回答 2

3

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

于 2013-10-03T16:12:35.733 回答
0

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

[[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];

我已经成功地使用它来异步同步 CoreData 数据库,但我不确定它如何适用于 UIManagedDocuments。

于 2012-05-19T05:54:08.313 回答