0
最近,我正在嘗試優化我的代碼。我發現我的所有實體都具有名爲標識符和所有者的屬性,所以我想創建一個實體作爲它們的包含標識符和所有者的父項。CoreData:創建一個新實體作爲舊實體的父代
以下爲的結果,所有的對象從名爲SRModel母體,其具有標識符和所有者屬性繼承。
然而,當我刪除所有這些冗餘性,持久性存儲是無法自動遷移。 我該如何解決這個問題?我必須自己做移民嗎? 有沒有簡單的方法可以做到這一點?
最近,我正在嘗試優化我的代碼。我發現我的所有實體都具有名爲標識符和所有者的屬性,所以我想創建一個實體作爲它們的包含標識符和所有者的父項。CoreData:創建一個新實體作爲舊實體的父代
以下爲的結果,所有的對象從名爲SRModel母體,其具有標識符和所有者屬性繼承。
然而,當我刪除所有這些冗餘性,持久性存儲是無法自動遷移。 我該如何解決這個問題?我必須自己做移民嗎? 有沒有簡單的方法可以做到這一點?
根據蘋果的Core Data Model Versioning and Data Migration Programming Guide,你不能自動做到這一點。
但是,您不能合併實體層次結構;如果兩個現有實體在源中不共享父公共共享,則它們不能共享目標中的共同父代
注意Andy Riordan關於繼承的觀點。不要只聽他的話,在舊模型和新模型下查看生成的.SQLite文件。添加一個只有兩個公共屬性的父實體將使您的實體和支持表變大,而沒有性能優勢。如果您真的想要注意兩個常見元素,請使用協議將它們調出。
不是你的問題的答案,但FYI:http://stackoverflow.com/a/27626521/131779 – 2015-02-12 01:33:35
@AndyRiordan非常感謝你!也許我會創建獨立於舊版本的新實體... – 2015-02-12 01:43:59