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

公開日:

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

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

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

やり方

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

この記事を書いた人

かい (@takasqr)

ソフトウェアエンジニア。個人的にアプリを作って得た知見をブログに書いています。