CoreData でライトウェイトマイグレーション【Lightweight migration】

すでにアプリをインストールした状態でカラムを追加したバージョンをアップデートするとアプリ起動時にクラッシュする。

アプリがクラッシュしないように CoreData をマイグレーションする必要がある。

ライトウェイトマイグレーションは、attribute の追加、削除などを自動的に検知して CoreData をマイグレーションしてくれる機能です。

この記事を書いた人

@takasqr アプリケーション開発が大好きなエンジニア。Vue、Swift、Electrom などでアプリを作って公開している。AWS や Firebase などのクラウドサービスも好き。

やり方

Swift コード追加

詳しくは下のリンクを参照してください。

container.persistentStoreDescriptions.forEach { description in
    description.setOption(true as NSNumber, forKey: NSMigratePersistentStoresAutomaticallyOption)
    description.setOption(true as NSNumber, forKey: NSInferMappingModelAutomaticallyOption)
}

Xcode で作業

  1. xcdatamodeld ファイルを選択した状態で、EditorAdd Model Version...と進む
  2. 新しいモデルバージョンを作るAppName 2のような感じ
  3. AppName 2を選択して、インスペクターエリアに表示されているModel VersionCurrentを新しく作ったモデルバージョンにする
  4. AppName 2でカラム追加、モデル追加を行う

参考

Migrating your data model automatically | Apple Developer Documentation