Перенос области с повторным созданием схемы для конкретной версии базы данных - PullRequest
0 голосов
/ 17 мая 2018

До версии базы 11 в моем приложении пользователь не вводил данные. Так что мне не нужна миграция. Я использовал .deleteRealmIfMigrationNeeded(). Начиная с версии 11, пользователи могут вводить данные. Теперь мне нужно использовать миграцию. До версии 11 мне нужно заново создать схему, но в то же время, начиная с версии 11, мне нужно сохранять пользовательские данные. Как это сделать в моем пользовательском классе миграции?

Кроме того, мое приложение использует шифрование. Я получаю ключ при авторизации приложения на сервере при запуске приложения. Имя базы данных также формируется на основе этого ключа.

1 Ответ

0 голосов
/ 17 мая 2018

В вашем случае вам нужно удалить файл Realm, если он старше, чем версия 11, и в противном случае обработать миграцию по мере необходимости.

RealmConfiguration realmConfiguration = new RealmConfiguration.Builder()
                                            .schemaVersion(11)
                                            .migration(new MyMigration())
                                            ./*...*/.build();
Realm.setDefaultConfiguration(realmConfiguration);
DynamicRealm dynamicRealm = DynamicRealm.getInstance(realmConfiguration);
long schemaVersion = dynamicRealm.getVersion();
dynamicRealm.close();
if(schemaVersion < 11) {
    Realm.deleteRealm(realmConfiguration);
}
Realm realm = Realm.getDefaultInstance(); // should work now
...