2014-01-12 50 views
0

我有一個使用核心數據但沒有iCloud的iPhone應用程序發佈的V1.0。 現在我想要發佈支持iCloud的V2.0。如何在發佈更新中啓用iCloud並遷移核心數據?

我使用https://github.com/mluisbrown/iCloudCoreDataStack/blob/master/iCloudCoreDataStack/PersistentStack.m作爲模板,並且一切似乎都起作用。

由於以前的版本沒有iCloud,而新版本會,我希望在用戶第一次打開新版本時將本地副本遷移到iCloud。

我該怎麼做?我可以簡單地以某種方式將整個sqlite文件從本地複製到iCloud?模式在1.0和2.0之間相同。

我打算問用戶他們是否想使用本地Vs. iCloud(按照指南),但如果他們說是的,我想只是做一個批量複製莫名其妙。

感謝

回答

0

我剛剛發佈了包含iCloud集成的示例iOS庫風格Core Data應用程序。該應用程序包括一個設置包,供用戶切換「使用iCloud」首選項設置,並根據用戶設置將存儲遷移到iCloud和從iCloud遷移。

從下面的鏈接下載 - 關於文檔的遺憾 - 將在某個時刻解決該問題,但它與UIManagedDocument示例的工作方式大致相同。

http://ossh.com.au/design-and-technology/software-development/

+0

我需要時間來對代碼進行分析,但這個例子看起來正是我一直在尋找。非常感謝 – dkarchmer

0

你不能批量複製,你必須使用適當的API [NSPersistentStoreCoordinator migratePersistentStore:...][NSPersistentStoreCoordinator removeUbiquitousContentAndPersistentStoreAtURL:...]與iCloud的選項商店遷移到iCloud。我試圖記錄如何做到這一點(但該示例使用UIManagedDocument,但用於遷移到iCloud和從iCloud遷移的Core Data API仍保持不變)。

您不僅需要檢查用戶首選項,還必須檢查它們是否已登錄到iCloud。您還必須遷移到iCloud,然後如果用戶更改首選項,則必須能夠遷移回本地。因此,無論何時應用程序變爲活動狀態,您都必須檢查用戶是否更改了設置。這並不是那麼簡單,但是一旦你找出所需的邏輯就不難。

請參見下面的更詳細的解釋,示例代碼的鏈接,並顯示應用程序的工作,並在本地和iCloud的容器創建/刪除文件的視頻:

http://ossh.com.au/design-and-technology/software-development/uimanageddocument-icloud-integration/

記住,你會必須從示例中刪除UIManagedDocument特定的代碼。