4
A
回答
8
這是在蘋果的Core Data Utility Tutorial的"Creating the Managed Object Model"下解釋的。一般而言,一旦您有管理對象模型的引用,就可以使用NSEntityDescription
和NSAttributeDescription
類來自定義管理對象模型中的實體及其屬性。
但是,請注意,在大多數情況下,一旦您修改託管對象模型,它將不再與現有的持久性數據存儲兼容,這意味着您將不得不將數據從舊持久性存儲遷移到新持久性存儲。這絕對不是一個不容小視的努力。
當然,正如評論中提到的,Core Data也可以自動遷移數據,這個過程被稱爲輕量級遷移。在一般情況下,雖然,這樣做
核心數據需要能夠找到 源和目標管理對象 車型本身在運行時。 (核心數據 搜索由
NSBundle
的allBundles
和allFrameworks
方法返回的束。),那麼它必須 分析模式更改 持久實體和屬性和 產生推斷的映射模型。 對於核心數據能夠做到這一點, 的變化必須符合一個明顯的 遷移模式,例如:
- 簡單增加了一個新的屬性
- 非可選屬性成爲可選
- 可選屬性成爲非可選,以及定義了默認值
是否適合這個您的使用情況下,還是要允許用戶如何改變託管對象模型的方式使輕量級遷移變得不可能?
在任何情況下,我強烈建議您在嘗試允許用戶修改Core Data模型之前通讀以下文檔。
1
見NSManagedObjectModel reference page ...
管理對象模型編輯 ,直到它們被對象圖 管理器使用。不過,一旦正在使用的模型 ,它不能被改變......
我「這絕對是一個先進的核心數據主題(而核心數據本身已經是一個相當先進的話題),不要輕易進行。如果讓用戶修改模型,我不確定已存儲在數據存儲區中的任何數據是否有用(甚至可用)。
相關問題
- 1. 在運行時動態創建核心數據模型
- 2. ASP.NET核心 - 自定義模型驗證
- 3. 自定義核心數據SectionNameKeyPath
- 4. 核心數據自定義遷移
- 5. 自定義模型綁定在Asp.Net核心的子類
- 6. 在AddValidation方法中訪問模型數據asp.net核心自定義驗證
- 7. 核心數據類與模型
- 8. 「合併」核心數據模型
- 9. 動態核心數據模型
- 10. 更改核心數據模型versionIdentifier
- 11. 創建新的核心數據模型
- 12. 處理核心數據模型更改
- 13. 核心數據:加載模型失敗
- 14. 模型對象和核心數據
- 15. Xcode核心數據模型丟失
- 16. 「子類」核心數據模型
- 17. 核心數據模型 - 關係
- 18. 核心數據模型版本問題
- 19. 核心數據模型遷移步驟
- 20. 評論核心數據模型
- 21. 在覈心數據保存自定義類斯威夫特
- 22. 在Swift中使用自定義TableViewCell的核心數據圖像
- 23. 與並行運算核心數據
- 24. 核心數據,NSTableColumn綁定和自定義NSCell
- 25. 自定義setter/getter函數核心數據
- 26. 函數運行的核心
- 27. 核心數據數據模型:UIColor的屬性類型
- 28. 幫助在覈心數據中設置數據模型
- 29. 如何在覈心數據中創建數據模型?
- 30. 的CocoaPods /訪問自己的核心數據模型
對於模型核心數據的簡單變異將自動推斷遷移映射,甚至可以將用戶修改的模型存儲在磁盤上,因爲NSManagedObjectModel實現了NSCoding。 – ImHuntingWabbits 2011-06-17 07:17:54
@matchi這回答你的問題? – 2011-07-20 22:32:31