我正在将iCloud同步添加到我的应用中。我的UIManagedDocument
商店位于沙箱中,其更改日志位于iCloud中(由NSPersistentStoreUbiquitousContentURLKey
指定)。问题是,当我第一次在第二个设备上安装并运行应用程序时,需要花费很多分钟才能进行初始同步(以获取第一个设备创建的更新)。这是一个真正的问题,因为同步显然发生在UIManagedDocument:saveToURL:completionHandler
内。因此,完成处理程序块需要很长时间才能被调用,如果我在UIManagedDocument
返回之前访问UIManagedDocument:saveToURL
,我可以理解为崩溃。
我想打开数据库快速,然后在后台执行同步。我该怎么办?
答案 0 :(得分:3)
是的,第二台设备上的初始同步可能需要90秒或更长时间(iOS 7)。我有一个工作的iOS 7应用程序的开源示例,它创建了UIManagedDocument的实例。见:https://github.com/DonBriggs/MultiDocumentPlusUUID。首先,请查看在两台设备上运行的应用程序的屏幕截图。如果屏幕截图解决了您的问题,您可以自己尝试使用该应用并查看代码。我渴望得到反馈。
答案 1 :(得分:0)
您提到“数据库”并使用CoreData标记了此问题。但是,您指的是UIManagedDocument,它与CoreData数据库的同步不同。如果您的数据库是CoreData,则可以使用新的NSManagedObjectContext并发API对其进行初始化。看看:
[[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
我成功地使用它来异步同步CoreData数据库,但我不确定它对UIManagedDocuments的适用程度如何。