レルムスキーマを更新するときに、新しいクラス/フィールドを追加するようにRealmMigration
を再設定しました。私はアプリを更新しても何の問題もありませんでしたが、バージョンが変更されたことを指定せずにレルムが自分のスキーマを更新したことがわかったため、スキーマバージョンを更新するのを忘れてしまいました。スキーマのバージョンが変更されていなくても、レルムが移行されたスキーマ
私はそれを更新したときにクラスが既に存在していますが、これはさらに混乱していました。今は自分のスキーマバージョンを設定することを知らなかったので、私はスキーマを変更しました。 RealmMigration
オブジェクトなので、以前のバージョン番号に残しておくべきかどうかはわかりませんでした。クラスはまだ存在しません。例外が発生しているか、正しいバージョン番号に変更して例外を引き起こします。
レルム移行例外が発生した場合、指定されたRealmMigration
オブジェクトでレルムがマイグレーションを実行できる可能性があります。スキーマのバージョンが決して更新されなかったとしても?
RealmMigration migration = new RealmMigration() {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
RealmSchema schema = realm.getSchema();
if (oldVersion == 0) {
schema.create("Person")
.addField("name", String.class)
.addField("age", int.class);
// forgot: oldVersion++;
}
}
}
あなたがPerson
クラスを追加したり、バージョンをバンプすべきかどうかを判断するためにバージョンを使用することはできません。
これは、スキーマのバージョンが変更されていなくても、レルムがスキーマを更新することを意図していますか? – shoe
そのためのものではありません。ユースケースとはみなしませんでした。 – geisshirt