CoreData(數據庫升級 )版本遷移-iOS App升級安裝

如果IOS App 使用到CoreData,並且在上一個版本上有數據庫更新(新增表、字段等操作),那在覆蓋安裝程序時就要進行CoreData數據庫的遷移,具體操作如下:

1.選中你的mydata.xcdatamodeld文件,選擇菜單editor->Add Model Version  比如取名:mydata2.xcdatamodel

2.設置當前版本

   選擇上級mydata.xcdatamodeld ,在inspector中的Versioned Core Data Model選擇Current模版爲mydata2

3.修改新數據模型mydata2,在新的文件上添加字段及表

4.刪除原來的類文件,重新生成下類。

在appdelegate中


首先說明奮鬥:我的 "CoreData_New.xcdatamodeld"---實體模型已經被我從Model.xcdatamodeld遷移到了Model2.xcdatamodeld,現在我想遷移到Model3.xcdatamodeld

開始操作之前如圖:


具體操作如下:

第一步:選中原版本操作如圖




第二步:選中Add Model Version。。。,會出現下圖

注意:你會看到,你新建的實體模型文件會依據你的上一個版本新建的。如果前面有很多版本,請選擇你想哪一個依據哪一個新建,選上默認的上一個就可以了,不然你選上更早的版本,數據肯定會丟失

第三步:點擊完成會現在下圖新的實體模型 Model3.xcdatamodeld,裏面的數據會跟原來那個一模一樣


第四步:現在就可以進行你的數據對象操作了,具體數據這裏就不進行操作了


第五步:現在我們進行選擇遷移後的版本,進入下圖第一個界面,點開Model Version,裏面會有你以前的版本,選擇你修改了數據的新版本即可

   


第六步:選好之後,如下圖效果


第七步:現在進行代碼操作

1,options系統默認的options是nil,點擊去API發現是個字典,所以我們需要創建一個字典對象

我再細化點:進去API之後再COMMAD+F在搜索欄輸入autom


2,選擇一直enter鍵,找到如下圖



第八步:代碼如下圖

第九步:按照上圖修改代碼即可,完成,運行成功。


其他補充,

 CoreData中使用的幾個類。
 (1)NSManagedObjectModel(被管理的對象模型)
 相當於實體,不過它包含 了實體間的關係
 (2)NSManagedObjectContext(被管理的對象上下文)
 操作實際內容
 作用:插入數據  查詢  更新  刪除
 (3)NSPersistentStoreCoordinator(持久化存儲助理)
 相當於數據庫的連接器
 (4)NSFetchRequest(獲取數據的請求)
 相當於查詢語句
 (5)NSPredicate(相當於查詢條件)
 (6)NSEntityDescription(實體結構)
 (7)後綴名爲.xcdatamodel的包
 裏面的.xcdatamodel文件,用數據模型編輯器編輯
 編譯後爲.momd或.mom文件,這就是爲什麼文件中沒有這個東西,而我們的程序中用到這個東西而不會報錯的原因

注意:coreData是對象關係型數據庫,最大的缺點是線程關係,可以以二進制、數據庫、XML格式存儲,可以有版本遷移,這個比SQL好,SQL是數據庫存儲,對象型數據庫
 
    "CoreData_New.xcdatamodeld"---實體模型文件
    SQL 給的是字符串,CoreData給的是URL


/**coreDta步驟
 *  1 創建文件模型文件
 *  2 添加實體
 *  3 創建實體類
 *  4 生成上下文,並聯數據模型,生成數據庫
 *
    注意:coreData是對象關係型數據庫,最大的缺點是線程關係,可以以二進制、數據庫、XML格式存儲,可以有版本遷移,這個比SQL好,SQL是數據庫存儲,對象型數據庫
 
    "CoreData_New.xcdatamodeld"---實體模型文件
    SQL 給的是字符串,CoreData給的是URL
 */

其他:下圖感謝博主分享:http://mrydblog.com/



注意:這是個人習慣操作,僅供參考,如有錯誤,請留言指出。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章