我是核心數據新手,誰能讓我知道版本控制和數據遷移之間的區別。當我們進行版本控制和數據遷移時?模型版本控制與數據管理有什麼區別?
回答
版本用途類似於版本上的應用程式,以指示除了在覈心數據演變的代碼是數據模型,即在.xcdatamodel文件中定義的實體,實體屬性和關係的相同的基本代碼的不同進化變化。
遷移是您對持久性存儲中的最終用戶現有數據執行的操作,以便格式化/構建存儲以使用新版本的數據模型。
它的工作原理是這樣的:
你發佈你的應用程序的1.0版本,它與一個版本1.0以及數據模型。最終用戶然後使用您的應用程序並使用數據模型1.0將其數據保存爲格式化/結構化的持久性存儲。
然後,您發佈應用的2.0版,並在此過程中對數據模型進行了更改,例如您更改屬性名稱,添加屬性或添加實體。您可以將數據模型版本化爲2.0(實際版本名稱是任意的)。然後,您可以提供自動遷移或手動遷移,以便可以將1.0持久性存儲文件中的最終用戶數據重新格式化爲數據模型2.0格式。
對核心數據模型所做的每一項更改都會生成新版本。每一次改變。
核心數據沒有一個模型的概念比另一個模型更新,但它只是知道它們是不同的。核心數據不會使用由您擁有的模型版本創建的商店(磁盤上的數據庫)。
這就是遷移進來的地方,這只是一個告訴Core Data如何從一個模型到另一個模型的過程,數據存儲在由特定模型創建的數據庫中。核心數據可以嘗試猜測(自動遷移),對於簡單的更改可以正常工作,但您可以手動創建更復雜的遷移,仔細從一個模型版本中提取數據,並將其放置到新模型版本的數據庫中。
你什麼時候創建新的模型版本?將具有Core Data模型的應用程序發送到App Store之後,應立即爲更改創建新的模型版本,以便原始模型版本可以爲App Store版本更高版本的人員創建遷移路徑。
什麼時候應該創建遷移?基本上,只要您向商店發運新版本,就需要從商店中的任何早期型號(因此可能在某人的手機上)到最新的數據模型版本找出一條路徑。如上所述,如果更改很簡單,您可以使用自動版本,但始終進行測試(保持每個應用商店版本均可訪問,以便您可以測試加載舊版本,然後遷移到新版本)。
順便說一句,一個可接受的計劃就是刪除現有的數據庫,如果模型已經改變了,只要你可以把某些用戶以某種方式返回到數據庫中(或者如果用戶從未放過任何東西,就像在緩存數據庫中一樣)。
- 1. Android內存管理與Linux內存管理有什麼區別?
- 2. 數據模型和對象模型有什麼區別?
- 3. 版本與集成版本有什麼區別?
- 4. MVC模型,數據和數據庫有什麼區別?
- 5. 數據模型和數據結構有什麼區別?
- 6. 數據設計和數據模型(ERD)有什麼區別
- 7. Rails數據類型有什麼區別?
- 8. 數據模型版本管理和關係管理
- 9. 調和管理::控制器與模型::
- 10. 邏輯數據模型和概念數據模型有什麼區別?
- 11. Json.Net版本有什麼區別?
- 12. Linux內核版本有什麼區別?
- 13. Qt Creator版本有什麼區別?
- 14. Orientdb版本有什麼區別?
- 15. 事務管理器和數據庫管理器有什麼區別?
- 16. 有沒有3D模型/ 3D數據的版本控制系統?
- 17. 託管bean和彈簧控制器有什麼區別?
- 18. ASP和SaaS模型有什麼區別?
- 19. ERD和上下文數據模型有什麼區別?
- 20. 繁殖與處理有什麼區別?
- 21. 版本控制(SVN)和管理樣本數據?
- 22. 模式與路徑有什麼區別?
- 23. 關係與非關係數據建模 - 有什麼區別
- 24. 自定義模型管理器方法和QuerySet方法有什麼區別?
- 25. VSE版本和Vyatta Core版本之間有什麼區別AMI
- 26. Qt調試版本和Qt發佈版本有什麼區別?
- 27. 「軟件版本」和「平臺版本」有什麼區別?
- 28. 「運行時版本」和「版本」有什麼區別?
- 29. 免費版本和檢查版本有什麼區別?
- 30. MD5二進制模式和文本模式有什麼區別?
還有一件事,如果我們刪除一個實體,那麼我們應該手動遷移數據或類似的東西,我可以有一個更簡單的示例模型示例。我有很多疑問。新版本意味着相同的文件.xcmodel,當我們創建一個新模型.xcmodelId時,我們需要手動將數據遷移到另一個將由第二個模型創建的sqlite。合理?或者我搞砸了? – Vijay
刪除實體是一個簡單的遷移。它可以使用自動遷移來完成。只需創建一個新版本並編輯模型並將其設置爲當前版本即可。 – Sandeep
聽起來不錯。但是,當手動遷移出現時,我們使用手動遷移進行什麼樣的更改。我們怎麼知道我們應該使用手動migartion ?. – Vijay