![見出し画像](https://assets.st-note.com/production/uploads/images/95879817/rectangle_large_type_2_7c482bd728c2ea00e9bce3601b941f94.png?width=1200)
CoreDataのmigration方法
こんにちは! りーさんです^_^
最近、リリース後のアプリでCoreDataの既存のEntitiesにAttribute追加する改修があって、マイグレーションする機会があったのでここに方法をメモしておきます!
マイグーション手順
xcdatamodelファイル作成
xcdatamodelバージョン設定
既存のCoreDataVer2のEntitiesにAttributeを追加
DataMappingModelファイル作成
最後にマイグレーションできているかチェック!
今回のサンプルデータ
![](https://assets.st-note.com/production/uploads/images/95880533/picture_pc_5723095afd335765fef6129b0f5aa4be.png?width=1200)
CoreDataSampleAppの中にCoreDataSample. xcdatamodelがあり、
ItemというEntitiesのAttributesがid・title・memoがあるものがあります。
こちらのCoreDataをアプリリリースしたとします!
この後の手順は、アプリリリース後に改修で必要になった既存のEntitiesのAttributeを追加するための手順を記します。
手順1 xcdatamodelファイル作成
![](https://assets.st-note.com/production/uploads/images/95881023/picture_pc_8edbce24ed132d8f7c4cb9d511299eef.png?width=1200)
CoreDataSample.xcdatamodelをクリックしてから、Xcodeメニュー(上)
Editor -> Add Model Version..を選択します。
![](https://assets.st-note.com/production/uploads/images/95881261/picture_pc_a2f38437ac72f2991d81a42ceac6eec9.png?width=1200)
version nameを入力するフォームが出るのでわかりやすくCoreDataSample Ver2という名前に設定します。 Based on modelはそのままで大丈夫です。
![](https://assets.st-note.com/production/uploads/images/95881390/picture_pc_d7c9ae9aa2b26bef33239dd2cef287a8.png?width=1200)
先ほどのをFinishするとCoreDataSample Ver2.xcdatamodelが作成されたのがわかります。ファイル名のアイコンにチェックが入っているのが使っている構造データにチェックが入ります。
手順2 xcdatamodelバージョン設定
![](https://assets.st-note.com/production/uploads/images/95882035/picture_pc_9ccb94d1dee6a0866105354370b26c85.png?width=1200)
CoreDataSample ver2をクリックして右のModel VersionのCurrentをCoreDataSample ver2に変更してください。
そうすると左のファイルアイコンにチェックがつきます!
手順3 既存のCoreDataVer2EntitiesにAttribute追加
![](https://assets.st-note.com/production/uploads/images/95881943/picture_pc_c6727174b61be432d6b259ae5be03d06.png?width=1200)
![](https://assets.st-note.com/production/uploads/images/95881632/picture_pc_42a01f19a450f139e19768e7f8b25ba1.png?width=1200)
CoreDataSample Ver2.xcdatamodelをクリックしたら、既存のCoreDataSample.xcdatamodelと全く同じEntitiesとAttributeが表示されているので
Ver2の方に追加したいAttributeを追加していきます。
今回は元々あったid・title・memoに加え、subTitle・createdAtを追加します。
手順4 DataMappingModelファイル作成
![](https://assets.st-note.com/production/uploads/images/95882493/picture_pc_9aaa605475b7223297381bae19a5a28e.png?width=1200)
Attributeの追加ができたら、いつも通りSwiftファイルを追加するようにadd filleして
Mappingで検索します。 Mapping Modelファイルを選択しNextを押しましょう!
![](https://assets.st-note.com/production/uploads/images/95882627/picture_pc_563f82c7029c43da2d540fb7f8fb969d.png?width=1200)
上記の画面が出たら既存のCoreDataSample.xcdatamodelを選択して、Nextです。
![](https://assets.st-note.com/production/uploads/images/95882778/picture_pc_a82f60366e1f7721eac339bcbb99475d.png?width=1200)
次の画面は新規のCoreDataSample ver2.xcdatamodelを選択し、Nextです。
![](https://assets.st-note.com/production/uploads/images/95882795/picture_pc_ed3890113ad87b8c3923ba50f22da256.png?width=1200)
Mapping Modelのファイル名をわかりやすくCoreDataSampleVer1toVer2と設定し、Createします。
![](https://assets.st-note.com/production/uploads/images/95882844/picture_pc_4ee4ad97357328504f1b8b186695dfce.png?width=1200)
これでCoreDataSampleVer1toVer2のMappingModelが作成されたことがわかります。これでマイグレーションの手順は以上になります。
最後にマイグレーションできているかチェック!
上記の手順が全てできたら、マイグレーションができているかチェックしてみます。
まず、ビルドしてみて既存の構造データのものを閲覧してもクラッシュしないか見ます。問題なければ、新しいデータを追加してみて、新規の構造データのものと既存の構造データの値を出力してみて、大丈夫であれば無事にマイグレーション完了です!!
お疲れ様でした!!何か間違っていたらご指摘お願いします🙇