2

Realm プラットフォーム:モバイル Android
Realm バージョン: 3.3.2
暗号化:はい

私はプロダクションアプリを持っています。アプリ v0.3.0 から v0.14.0 までの移行が必要な場合は、レルムの自動削除を使用します。何らかの理由で、v0.14.2 では手動で移行する必要があります。また、v0.14.0 より前のバージョンから更新したため、エラーが発生したユーザーもいましたが、私は v0.14.0 から v0.14.2 への移行のみを処理しています。多くの移行を行う必要があるため、最初からバージョンのオフを処理するかどうか混乱しました。したがって、ユーザーが v0.14.0 より前のバージョンからアプリを更新する場合、移行時にレルムを手動で削除したいと考えています。どうやってするか?

私はこれが好きですが、私はまだ持っていますRealmMigrationNeededException

@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
    RealmSchema schema = realm.getSchema();


    if (oldVersion == 0) {
        //update from v0.10.5 / update from v0.13.0
        if (schema.get("User").hasField("blocks") || !schema.get("Contact").hasField("pinned")) {
            realm.deleteAll();
            return;
        }

        addField(schema, "Message", "messageDuration", int.class);
        addField(schema, "Message", "starred", boolean.class);
        oldVersion++;
    }

    if (oldVersion == 1) {
        if (!schema.contains("PhoneBook")) {
            schema.create("PhoneBook")
                    .addField("phone", String.class)
                    .addPrimaryKey("phone")
                    .addField("name", String.class)
                    .addField("image", String.class);
        }

        if (schema.contains("RealmString")) {
            schema.remove("RealmString");
        }
        oldVersion++;
    }
}
4

1 に答える 1