#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, я также улавливаю ошибки, которые могут возникнуть при неправильной миграции, а затем удаляю область.