2016-04-28 41 views
1

我一直使用Coredata在我的iOS(SWIFT和的ObjectiveC)應用程序。數據模型結構變化頻繁:最好的工作方式

現在,在我的新的項目,我有這種情況;數據模型經常變化。例如屬性以前是一個字符串變成了關係,反之亦然,字符串變成的NSNumber,關係消失留下實體從另一臺分離等

Coredata仍然是最好的解決方案? 我必須始終編寫一個遷移腳本來解決遷移問題?

回答

0

從我的角度來看核心數據是最好的解決方案,即使在您的情況下,您也需要進行艱苦的遷移。

  1. (硬)遷移像變化的實體類型 或從實體和其他屬性除去不簡單的更改。對於這種類型的 遷移,您需要編寫額外的腳本,稱爲 migration process
  2. Lightweight migration簡單 變化到模型如添加新的屬性的實體和核心數據執行自動數據遷移。

這只是我的觀點。讓我們看看其他人會在這裏發佈什麼。

Core Data and Swift: Migration

2

核心數據最好相比呢?在什麼軸上?便於管理數據模型遷移?查詢速度?對象< - >存儲交互?

你可以比較許多軸。

首先,觀察,遷移現場設備上的數據是一個問題。任何數據庫都需要一些時間進行遷移。該應用無響應的時間。用戶可以在遷移期間殺死該應用程序,認爲它已死亡。因此,保重你改變模式的頻率。在啓動時,您將失去每個無響應應用程序的客戶。你的同事可能不瞭解客戶多麼變幻無常。用戶可能不太在乎應用程序遭受任何類型的漫長遷移。

根據我的經驗,Core Data比大多數環境更好地處理遷移。其他使用SQLite的環境不可能更高性能。使用不同的數據庫?那麼你正在重寫你的應用程序中的每個對象?哇!那麼你就不僅僅是一個遷移問題。

從你的問題,這聽起來像你正在進行架構攪動。這對您的開發過程來說不是一個好兆頭。在考慮更改數據庫之前,我會解決這個問題。

當您有選項時,請始終使用輕量級遷移。在您需要映射模型進行硬遷移之前,請仔細考慮。輕量級遷移往往在現場非常有效。這是一個非常重要的特徵要維護。艱難的遷移是你的模式的相當突變。我努力工作以避免漫長的遷移。