Удалить область, если перенос вручную не удался

#android #realm

#Android #область

Вопрос:

В настоящее время я использую

 RealmConfiguration config = new RealmConfiguration.Builder()
.deleteRealmIfMigrationNeeded()
.build()
  

Это хорошо при разработке, но не идеально при выпуске обновлений в App Store.
Я написал код миграции с использованием RealmMigration, чтобы пользователи не удаляли свою область после обновления.

Но теперь миграции станут помехой при разработке, если я когда-либо внесу какие-либо изменения в схему.

Есть ли в любом случае возможность заставить Realm попробовать и использовать миграцию… и если миграция завершается неудачей, просто удалите область?

Ответ №1:

Вы могли бы сделать что-то вроде:

 try {
    Realm realm = Realm.getInstance(config);
    realm.close();
} catch (RealmMigrationNeededException e) {
    Realm.deleteRealm(config);
}
Realm realm = Realm.getInstance(config);
  

Комментарии:

1. да, но было бы раздражающе делать это каждый раз, когда я получаю экземпляр области

2. Вам нужно сделать это только один раз — при запуске приложения. Но не стесняйтесь создавать запрос функции в репозитории Realm Java на github.

3. Хороший момент, единственная проблема с вашим кодом заключается в том, что когда вы предоставляете миграцию в своей конфигурации, исключение RealmMigrationNeededException — это не единственная ошибка, которая может быть вызвана. Вместо того, чтобы только перехватывать исключение RealmMigrationNeededException, я также улавливаю ошибки, которые могут возникнуть при неправильной миграции, а затем удаляю область.