はじめに
私は最近プログラミングスクールにて学習をスタートした初学者で、学習していく中で疑問に思ったことや苦労したことなどについて記事を書いております。
知識が浅はかですので、間違っている部分があるかもしれません。
あらかじめご了承ください。
また、今回は自分用に残したいと思います。
Realmマイグレーションエラー
RealmSwiftをPodsインストールしてアプリ開発をする中で、下記のようなエラーが発生しました。
Thread 1: Fatal error: Failed to instantiate Realm: Error Domain=io.realm Code=10 "Migration is required due to the following errors:
- Property 'QuoteDataModel.quoteLabel' has been removed.
- Property 'QuoteDataModel.characterLabel' has been removed.
- Property 'QuoteDataModel.quote' has been added.
- Property 'QuoteDataModel.part' has been added.
- Property 'QuoteDataModel.characterName' has been added." UserInfo={Error Name=SchemaMismatch, NSLocalizedDescription=Migration is required due to the following errors:
Realmマイグレーションエラーとは?
モデルの定義が書き変わってしまったので、Realm側が「どっちを信じればいいんだ??」
と言っているエラーです。
もう少し掘り下げると、
マイグレーションエラーは、Realmデータベースのスキーマ(構造)が変更された際に発生します。スキーマが変更されると、Realmは古いスキーマのデータを新しいスキーマに適合させるためにマイグレーションが必要になります。
解消法
とても簡単で、
一度アプリを削除します。
なぜアプリを削除で解消されるのか?
アプリを削除すると、そのアプリが利用していたすべてのデータがデバイスから削除されます。これにはRealmデータベースも含まれます。アプリを再インストールすると、新しいスキーマでデータベースが再生成されるため、マイグレーションの問題が発生しなくなります。
おわりに
Realmを使う際に、必要になる知識だと思うので
今回このようなエラーに出会えてよかったです。