質問: Realmを使用したAndroidアプリの開発を始めたのですが、カラム名や型を変更するとアプリが落ちてしまいます。どちらか片方を変更しただけでもアプリが落ちます。 ### プログラムの構成 MainActivity.kt ・createメソッド(新しいレコードの追加) ・readメソッド(値をとってくる) ・TextViewにとってきた値を表示 DataBase.kt ・PrimaryKey:id(String) ・カラム名 :name(String), price(Long) ### やりたいこと 上記のサイトを中心にいろいろなサイトを見ながら、レコードを追加して値をとってくるところまではとりあえず上手くいったのですが、サイトに書いてあった通りにカラム名をつけていたので下記のように変更する必要がありました。 name(String) → mName(String) price(Long) → mPhonetic(String) ### 変更点 DataBase.ktのカラム名と型 MainActivity.ktのcreateメソッドの引数と指定した項目に引数の値を入れる処理
回答: すでにRealmのファイルに保存されているオブジェクトのデータ構造とクラスの定義が異なるためです。 解決方法としては2つあります。 まだアプリが未リリースで、かつ既存のデータを消しても良いのであれば、Realmファイルを消す、または`RealmConfiguration`にデータ構造が異なる場合は自動的にファイルを消して再生成するという設定の`deleteIfMigrationNeeded()`を指定します。そうするとRealmが自動的に既存のファイルを消して新しいデータ構造で再生成してくれます。 既存のデータが消せない場合、マイグレーションを記述します。これはRealmにデータ構造の変更が意図的なもので、どこが変わったのかを知らせる処理になります。 詳しくは をみてください。