我有一种情况,我想以懒惰的方式处理领域迁移。我不想使用领域开发人员状态繁琐的Realm Migration API,而是想删除领域实例,然后仅在需要执行迁移时重新实例化它。如何正确处理这种情况,以便只在需要升级时才删除并重新实例化数据库?如何正确处理领域实例删除
说我有一个模型
@RealmClass
public class testmodel extends RealmObject {
private String foo;
private int bar;
public int getBar() {
return bar;
}
public void setBar(int bar) {
this.bar = bar;
}
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}
,我想另一个字符串bazz
加入到与适当的getter和setter模型。
目前,只要我第一次实例化领域,我就可以做到这一点,我删除它。像这样:
Realm.deleteRealmFile(getApplicationContext());
realm = Realm.getInstance(getApplicationContext());
现在,让我们假设我不想去每一个应用程序启动时吹了我的数据,但还是想做到这一点的情况下,当我需要。我认为一个好方法就是这样。
try{
Log.d(TAG, "started realm creation");
realm = Realm.getInstance(getApplicationContext());
Log.d(TAG, "successfully created realm");
}
catch (RealmException e){ // I tried RealmMigrationNeededException and IllegalState Exception but neither are caught
Log.d(TAG, "try deleting realm");
Realm.deleteRealmFile(getApplicationContext());
realm = Realm.getInstance(getApplicationContext());
Log.d(TAG, "deleted realm and remade successfully");
}
但是,当我尝试这个而不是被捕获的异常,我的应用程序崩溃。 我该如何正确处理这种情况,以便只在需要升级时才删除并重新实例化数据库?
你选择的架构版本42,因为它是一切问题的答案? –
是的,在你的情况下,只要你改变你的模型类,你可能只想碰撞该版本:) –
为什么不在文档中?从什么时候开始0.81? –