2013-02-24 226 views
2

我使用UIManagedDocument和無處不在選項(NSPersistentStoreUbiquitousContentNameKey和NSPersistentStoreUbiquitousContentURLKey)測試Core Data和iCloud。 一切工作正常。我的設備可以在合理的時間內無故障地同步。數據庫很小(低於100K)。核心數據iCloud事務日誌

正如我所說我正在測試應用程序,並對數據庫進行了很多更改,並因此產生了很多事務日誌。我的問題是,如果我刪除並重新安裝上用於測試的設備中的一個應用程序(不刪除的iCloud數據)的應用程序需要很長的時間來打開文檔。 openWithCompletionHandler需要幾分鐘,有時永遠不會結束。如果我打開調試(-com.apple.coredata.ubiquity.logLevel 3)我可以看到,有一個漫長的等待和數據庫與事務日誌重建後。 如果我刪除iCloud數據並重新插入第一個設備上的數據,第二個同步沒有問題。正因爲如此,我認爲,對於延遲的原因是大量的事務日誌(20-30測試時,我可以看到developer.icloud.com) 根據Managing Core Data iCloud Transaction Logs會自動處理核心數據,但我不能看到任何刪除。也許這需要更多的時間。

我的問題是:你的事務日誌被不斷鞏固?我可以強制整理日誌嗎?另一個推薦選項?

我只存儲所需要的iCloud中的核心數據文件同步的基本信息的子集。我有另一個本地文件與完整的數據庫,所以我可以重建iCloud數據庫沒有任何重大信息丟失。也許我可以在檢測到一堆日誌並重新創建時刪除iCloud DB。你認爲這是一個很好的選擇嗎?

謝謝你的幫助。

回答

2

事務日誌是否得到整合?

這就是它應該如何工作。

我可以強制合併日誌嗎?

不。沒有API直接影響事務日誌的存在。 iCloud系統會在某些時候整合它們,但沒有關於何時發生的文檔,也不能強制它。

另一個推薦選項?

您可以間接限制事務日誌的數量 - 更頻繁地保存更改。事務日誌對應於保存核心數據中的更改。它可能沒有太大的區別,因爲誠實地說,20-30個事務日誌並不是很多。您可能可以減少日誌文件的數量,但您仍然可以獲得相同數量的數據。

事務日誌是不是真的你的問題。正如您所觀察到的,在iCloud開始運行事務日誌之前還有很長的等待時間。在此期間,iCloud正在與Apple的服務器進行通信並下載事務日誌。其中一部分受到網絡速度和延遲的影響,其餘部分只是iCloud的方式。

+0

謝謝你回答湯姆。 – eko 2013-02-25 08:16:53