2012-05-18 59 views
1

我正在將iCloud同步添加到我的應用程序。我的UIManagedDocument商店位於沙箱中,其更改日誌位於iCloud中(由NSPersistentStoreUbiquitousContentURLKey指定)。問題是,當我第一次在設備上安裝並運行應用程序時,需要花費很多分鐘來執行初始同步(以獲取由第一個設備創建的更新)。這是一個真正的問題,因爲該同步顯然發生在UIManagedDocument:saveToURL:completionHandler內部。所以完成處理程序塊需要很長時間才能被調用,並且如果我在UIManagedDocument:saveToURL返回之前訪問我的UIManagedDocument,則可以理解爲發生崩潰。創建UIManagedDocument和初始iCloud同步

我想快速打開數據庫然後在後臺進行同步。我該怎麼做?

回答

0

你提到「數據庫」並用CoreData標記了這個問題。但是,您指的是UIManagedDocument,它與CoreData數據庫的同步方式不同。如果你的數據庫是CoreData,你可以用新的NSManagedObjectContext併發API對它進行初始化。看一看:

[[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; 

我用這個成功異步同步一個CoreData數據庫,但我不知道它如何適用於UIManagedDocuments。

+1

我不確定你說'UIManagedDocument'與CoreData數據庫的同步方式不同。 UIManagedDocument的目的是簡化CoreData存儲訪問(請參閱http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIManagedDocument_Class/Reference/Reference.html)。 你的解決方案似乎並不直接適用,因爲使用UIManagedDocument你不會自己初始化NSManagedObjectContext。 – Macondo2Seattle

3

是的,第二臺設備上的初始同步可能需要90秒或更長時間(iOS 7)。我有一個可以創建UIManagedDocument實例的iOS 7應用程序的工作開源示例。請參閱:https://github.com/DonBriggs/MultiDocumentPlusUUID。首先,查看在兩個設備上運行的應用程序的屏幕截圖。如果屏幕截圖解決了您的問題,您可以親自嘗試應用程序並查看代碼。我渴望獲得反饋。

+0

歡迎來到SO,Don。 – Brian

+0

謝謝唐,我會檢查你的項目! – Macondo2Seattle