Xcode8でCoreDataのmigrationを行う

xcode8 Xcode8

前置き

CoreDataでデータモデルを作成し、シミュレータや実機で検証を行った後に、データモデルを変更してアプリをアップデートするとエラーが発生するので、変更した際には一度アプリをアンインストールして新規インストールしなくてはいけなくなってしまう。
既にリリース済みで新しいバージョンにアップデートしたい場合や、テストで入れたものも消さずにそのまま更新したい場合は、migrationを利用してモデルを変更し、アプリのバージョンアップを行えばよい。

前提

  • Xcode8を使用
  • CoreDataを使用したプロジェクトが作成されていること

マイグレーションの設定方法

既に作成済みのCoreDataのデータモデル .xcdatamodeld ファイルを選択し、メニュー > Editor > Add Model Version... を選択し、バージョン2のモデルファイルを作成する
image

追加するとデータモデルがツリー状態になるので、バージョン2を選択して、モデルの変更を行う
image
image

メニュー > Editor > Create NSManagedObject Subclass... でエンティティークラスを作成する際にバージョンの選択ができるでバージョン2にチェックをつけてクラスを再生成する
image

データモデルのバージョン1になっているので、バージョン2を選択する(画面右端を参照)
image

以上