coredata使用的是第三方庫magicrecord。
版本不斷覆蓋時需要對資料庫進行遷移,經過不斷打包測試,發現以下規律:
a、表中增加模型,覆蓋安裝後上乙個版本表中資料無法再取出
b、a模型中新增加欄位,覆蓋安裝後,訪問a模型資料,程式閃退,必須刪除以前版本重新安裝,才能正常訪問表中a模型的字段
c、a模型中刪除字段,覆蓋安裝後,對應用無影響
所以,只要資料庫表中有增加刪除模型,模型增加欄位等,都需要先做好版本遷移工作。具體步驟如下:
1、選中當前coredata的工作表(learndriver 2.xcdatamodel是我已經建好了的後的結果)
2、點選editor中的add model version,使用預設設定後下一步
3、所有的對錶中模型、欄位的修改均在新的表中進行
4、選中最初的那個表檔案
5、在右邊控制面板第乙個選項,model version中選擇最新的表
6、最後**調整,magicrecord只需要用下面**初始化資料庫即可(對應原生coredata中建立資料庫時的option選項字典,詳情看框架內部實現)
7、大工告成!
在我這個專案中,線上有兩個版本,未配置資料庫公升級工作,導致一旦覆蓋安裝以前的資料就無法再取出。一直一來對錶的操作都是直接在最初的表檔案修改,新增模型、模型新增欄位等。此時如果在這個已經更改的表檔案上再按照上面的操作遷移版本是行不通的。解決方案是從找到線上第乙個版本對應的表檔案,假設叫a.xcdatamodel,拷貝。當前工作版本的表檔案,假設是a++.xcdatamodel。用a替換掉a++,然後按照上面方法進行資料庫遷移,然後在新的表上將所有a++相比a所增加的模型、字段新增上去,再重新建立新新增的模型檔案即可。
CoreData版本遷移
如果已經建立好了coredata資料庫,當實體中多了乙個屬性的時候,我們直接去更改資料表中實體,為其增添屬性會發生錯誤,此時需要通過版本更新的方式解決這個問題.1.新增乙個model version檔案 2.設定使用以後要使用的版本 4.刪除之前版本中person實體對應的類,用新版本的person...
CoreData的資料遷移
很多人說coredata坑多,現在才感覺到,今天上午寫 的時候,發現了乙個大問題.其實很多簡單的情況,不用這麼麻煩,coredata提供了輕量級的自動資料遷移,比如以下三個情況會自動進行 1.簡單的增加乙個字段 2.把乙個必填字段改為可選字段 3.把可選字段改為必填字段 但一定要定義預設值 1.公升...
CoreData的資料遷移
很多人說coredata坑多,現在才感覺到,今天上午寫 的時候,發現了乙個大問題.其實很多簡單的情況,不用這麼麻煩,coredata提供了輕量級的自動資料遷移,比如以下三個情況會自動進行 1.簡單的增加乙個字段 2.把乙個必填字段改為可選字段 3.把可選字段改為必填字段 但一定要定義預設值 1.公升...