2013-02-11 160 views
1

我有一個應用程序,可以讀取世界各地的風速讀數。我決定使用鞋盒式應用使用iCloud和Core Data。手動遷移iCloud核心數據

風讀數每小時更新一次,使用應用程序幾個星期後我意識到這是一個糟糕的主意,因爲iCloud/Core Data只填寫了數兆字節的事務並恢復設備需要10分鐘將商店下載到新鮮的設備。

我對此的解決方案是使用核心數據配置,以便「網站」存儲在iCloud商店中,但每小時更改的「風讀數」在12小時後被刪除,並存儲在本地商店中。如果它更容易想象,它的作用類似於RSS「網站」和「條目」,每小時更改一次。

這一切都很好,但我不知道如何編寫我的應用程序的2.0版本的遷移代碼。在閱讀配置的工作方式之後,我必須刪除站點和風讀數之間的父/子關係,並使用獲取請求使用公共siteIdentifier UUID將其鏈接起來。

這樣做我認爲我不能使用輕量級遷移?同時加載版本化的.momd模型文件只是給我最新的模型,所以我如何獲得原始模型文件來加載商店並手動完成所有工作。

另一方面,這是否太複雜了,我會更好地移除iCloud支持,或者有另一種方法可以推薦?

回答

1

在這種情況下,您應該能夠使用輕量級遷移。

原因是,就你的'iCloud'配置而言,你只是刪除一個實體並刪除一個屬性(即刪除一個表和一列)。自動遷移可以很好地處理。

但是...

有一個問題。它不會首先將您擁有的數據複製到「本地」配置。因此,您需要在遷移之前手動執行此操作。以下是基本步驟:

  1. 確定是否需要執行此遷移。
  2. 將sqlite文件複製到「local.sqlite」。
  3. 站起來iCloud配置,這會刪除讀數。
  4. 站起來本地配置,這會刪除網站。
  5. 測試,測試,再次測試並繼續測試。
+0

感謝Marcus,您在Apple Developer論壇上重複瀏覽.momd內容的提示也非常有幫助。 [應用程序開發論壇帖子](https://devforums.apple.com/thread/179423?tstart=0) – Electron 2013-02-11 20:39:13

+0

我已經自動遷移現在工作。升級商店後是否可以掛鉤通知? – Electron 2013-02-13 12:30:50

+0

只要您的代碼通過'-addPersistentStore ...'遷移完成。沒有額外的通知需要,因爲'-addPersistentStore ...'塊。 – 2013-02-13 16:34:50