2015-05-12 155 views
1

我已經發布了一個應用程序,將Core Data與iCloud同步。 我需要更新添加兩個屬性的模型,然後填充這些新字段。iCloud和輕量級遷移

我已經在本地測試了輕量級遷移並且工作正常,我可以看到遷移到新模型方案中的舊數據。

當我激活iCloud時,保存在ubiquity容器中的舊數據不會與新模型模式同步。 預期的行爲是什麼? 我應該能夠在舊版和新版車型上同步數據嗎? 我該如何實現並測試這種情況?

我讀過:

CoreData versioning

Understanding Core Data iCloud Store Migration When Testing an iOS App Update

但實際上,我很困惑。

+2

我發現升級iCloud商店是不可靠的,尤其是在使用WAL模式時。我現在採用的方法是檢查應用程序啓動時是否需要升級商店,如果是,則先將商店遷移到本地商店,然後執行升級,然後將其遷移回iCloud。這似乎現在可靠地工作,但確實需要與用戶的一些互動,因爲事情可能需要一段時間,你需要確保iCloud商店被完全刪除,然後在所有設備上進行替換.... –

+0

我想不涉及用戶在這種遷移交互,但情況像http://stackoverflow.com/questions/27792667/icloud-core-data-model-schema-migration#comment48520244_27792667蠕變我出 – laucel

+1

確切地說,看到我的觀點上面重新執行遷移在一個iCloud商店...如果它不是100%可靠的,那不是一種選擇。我還提供了將現有商店(iCloud或本地)遷移到另一個本地文件的備份功能。然後用戶可以選擇將備份文件複製到iCloud,以提供額外的備份副本和/或從其中一個備份恢復數據庫。您可以在我的其他一些帖子中找到更多信息,這些帖子可以鏈接到一個示例應用程序以及其中一些代碼。 –

回答

4

應該發生的事情是iCloud數據僅在使用相同版本數據模型的設備之間同步。如果您在一臺設備上升級應用程序,但不在另一臺設備上升級應用程序,則它們將不會同步更改,直到第二臺設備也更新爲新的型號版本。

如果這不是你所看到的,請添加更多關於你所看到的問題的細節。

+0

現在感謝了。爲了測試目的,我應該在設備上安裝舊版本的應用程序,然後在新版本上安裝新的應用程序?如果我沒有弄錯,在已發佈的應用程序上構建新應用程序應該不起作用 – laucel

+1

如果您的意思是在手機上已經有應用程序商店版本的情況下從Xcode安裝應用程序,則應該可以工作。這是測試新版本應用的升級過程的一種非常常見的方法。 –

+0

我的意思是,但當我從商店版本(舊型號)的Xcode(新型號)安裝應用程序時,它無法正常工作,請參閱問題中的第二個鏈接,謝謝 – laucel