2012-03-31 139 views
3

我在應用程序商店中有一個應用程序,它使用coredata作爲存儲。我不想將iCloud同步作爲新功能更新應用程序。遵循蘋果的示例代碼,我設法讓我的核心數據存儲在設備之間同步。關於iCloud +核心數據的問題

但是,當iCloud同步在其中一個設備上的應用程序中關閉/打開時,或者應用程序從設備中刪除並重新安裝時遇到問題。在這兩種情況下,數據都不會同步回設備,儘管第二臺設備(沒有禁用/重新安裝)可以正常使用。

我還發現,當我從所有設備上刪除應用程序,然後重新安裝時,所有存儲都被完全刪除。通過我在控制檯中得到了幾個合併通知(甚至有些沒有錯誤),我在設備的本地存儲中看不到任何數據。

瀏覽我的mac上的移動文檔文件夾仍然會在我的應用程序的icloud存儲中顯示大量事務日誌。

即使從所有設備刪除應用程序,並從頭開始不會解決問題。最終會導致數據只能同步到一臺設備,或者根本不同步。

我不知道是否有什麼我可以做的關於這種不一致的狀態,當只有一個設備被臨時禁用iCloud時創建,或者該應用程序從一個設備中刪除?

至於我的代碼,它是來自apple的收件人示例的1:1副本。

+1

你可以通過蘋果開發論壇上的iCloud主題來看看 - 它有幾十頁,遇到類似問題的人。有些人甚至設法解決它們 - https://devforums.apple.com/thread/126670?tstart=0但社區仍然有一種感覺,即iCloud尚未準備好投入生產。或者2個月前,當我深入其中時,還沒有準備好。 – 2012-04-01 06:28:39

+0

感謝您的信息。我會看看論壇。 – user826955 2012-04-01 10:11:41

回答

2

Daniel Pasco談到using Core Data and iCloud together在NSConference 2012年從博客中的一些注意事項:

launching with -com.apple.coredata.ubiquity.logLevel 3 to get a spamfest in the message log saying what Core Data and iCloud are doing.

The conclusion from this talk appears to be that using Core Data and iCloud are really not ready for each other at this stage.

他發佈了一個updated Core Data Recipes project on Github這可能會或可能不會解決您的問題。

+1

食譜應用程序至少似乎與丹尼爾斯變化牢不可破。雖然單個對象仍可能卡住,但整體同步似乎在所有折磨後都起作用。仍然有問題將其移植到我的應用程序,雖然(他嘗試打開/關閉icloud同步時,他的課程不斷崩潰)。 – user826955 2012-04-02 19:37:35

1

蘋果讓它看起來很容易,但在正確地將數據與iCloud一起播種方面存在一些細微差別,以及當後續在不同設備上打開和關閉iCloud支持時會發生什麼情況。

我實現了一個示例項目,演示了向庫風格的CoreData應用程序添加iCloud支持的直接方式。它被稱爲iCloudStoreManager and it's available on github

在我將iCloud支持添加到我自己的生產應用程序之前,我仍在測試它。它正在工作,但是當iPad 3混合使用時,我發現了意想不到的錯誤和延遲。它的工作原理,但延誤很長。

我也測試過iPhone 4,iPhone 4S和原始iPad,而且這些設備的任何組合都能很好地滿足我的體驗。

+0

已經在開發人員論壇上發現您的課程,並嘗試在我的項目中使用它。你的框架中是否有處理iCloud不可用的代碼? (iCloud存儲在系統設置中關閉或在模擬器中運行) – user826955 2012-04-09 20:19:04

+0

我添加了你的代碼,雖然它似乎工作(還不能驗證),但我在一開始就得到這個:NSUbiquitousKeyValueStore error:com.myCompany.myAppName沒有有效的com.apple.developer.ubiquity-kvstore-identifier權利。那有什麼不對?當我在沒有代碼的情況下設置icloud存儲時,我不會收到此消息(如在食譜中 - 示例代碼)。 – user826955 2012-04-10 19:09:50