2017-02-27 24 views
1

我有一個應用程序,我3年前開發使用Obj C和NSUserDefaults(NSCoding/NSKeyed Archiver)作爲保存數據的方式。幾個月前,我重新設計了應用程序,並認爲現在是重新開發應用程序的好時機,但這次使用Swift 3和Core Data。該應用程序是完整的,但這個難題的最後一部分是如何將舊的保存數據(NSUserDefaults)轉換爲新的CoreData實體。如何將NSUserDefaults轉換爲CoreData

遷移的所有例子似乎都來自舊版本的數據庫(CoreData)並添加了一些新的東西。我很難找到我想要做的教程或起點。我確信它已經完成,可能已經有好幾千次了,但我似乎無法找到任何示例或文檔。

我當時希望有人能夠通過教程或類似項目指向正確的方向。

+0

爲什麼有人會爲此投票?您是否希望我列出關於該主題的書籍以及我從Lynda和Udemy簽出的在線課程。我已經完成了我對這個主題的研究,但我只是沒有找到我需要的東西。如果這讓你失望,我很抱歉。 – icekomo

+0

起點是Xcode Core Data模板中提供的代碼。對象模型的結構強烈依賴於用戶的默認結構。 – vadian

+0

爲什麼會有從NSUserDefaults到核心數據的遷移指南? NSUserDefault用於小的,簡單的,獨立的ir數據,它們本質上不獨立於同質。 NSUserDefaults畢竟只是一本字典。將會有關於如何在覈心數據中對數據建模的指南,從NSUserDefaults遷移時不會有一個。如果有我會吃我的餡餅帽子。 – Gruntcakes

回答

2

我並不感到驚訝,你沒有找到指南,因爲它不是一個很常見的情況。用戶默認和核心數據有兩個不同的用途,所以想要從一個遷移到另一個是不常見的。

假設你的數據有意義的核心數據,

  1. 創建一個新的核心數據模型,並添加一個或多個實體來表示你的數據。
  2. 在嘗試使用數據之前,在應用程序啓動時遷移。如果用戶默認存在的數據

    1. 檢查:

    遷移過程會是這樣的。

  3. 如果是這樣,請閱讀並創建適當的託管對象來表示它。根據用戶默認值中的值設置這些新對象的屬性。
  4. 從用戶默認值中刪除數據,以便下次第1步不會觸發新的遷移。

執行此操作的代碼將全部自定義,但它不應該很難。

+0

謝謝湯姆,抽出時間爲我打破這一切。 – icekomo

相關問題