

Realmを使用したAndroidアプリの開発を始めたのですが、カラム名や型を変更するとアプリが落ちてしまいます。どちらか片方を変更しただけでもアプリが落ちます。

### プログラムの構成

MainActivity.kt  
・createメソッド(新しいレコードの追加)  
・readメソッド(値をとってくる)  
・TextViewにとってきた値を表示

DataBase.kt  
・PrimaryKey：id(String)  
・カラム名 ：name(String), price(Long)

### やりたいこと

[Kotlin + Android でRealmをつかってみた。 -
Qiita](https://qiita.com/Juju_62q/items/eaf55c7722b826156404)

上記のサイトを中心にいろいろなサイトを見ながら、レコードを追加して値をとってくるところまではとりあえず上手くいったのですが、サイトに書いてあった通りにカラム名をつけていたので下記のように変更する必要がありました。

name(String) → mName(String) price(Long) → mPhonetic(String)

### 変更点

DataBase.ktのカラム名と型  
MainActivity.ktのcreateメソッドの引数と指定した項目に引数の値を入れる処理


CC BY-SA 4.0
2018-05-24T02:20:47.520
44204
2021-03-07T04:33:25.320
2021-03-07T04:33:25.320
3060
28635
question
android realm kotlin
Realmを使用したいのですがカラム名・型の変更ができません


すでにRealmのファイルに保存されているオブジェクトのデータ構造とクラスの定義が異なるためです。

解決方法としては２つあります。

まだアプリが未リリースで、かつ既存のデータを消しても良いのであれば、Realmファイルを消す、または`RealmConfiguration`にデータ構造が異なる場合は自動的にファイルを消して再生成するという設定の`deleteIfMigrationNeeded()`を指定します。そうするとRealmが自動的に既存のファイルを消して新しいデータ構造で再生成してくれます。

既存のデータが消せない場合、マイグレーションを記述します。これはRealmにデータ構造の変更が意図的なもので、どこが変わったのかを知らせる処理になります。

詳しくは  
<https://realm.io/docs/java/latest#migrations>  
をみてください。


CC BY-SA 4.0
2018-05-24T09:28:18.630
44218
2018-05-24T09:28:18.630
5519
44204
answer