我有一種情況,我想以懶惰的方式處理領域遷移。我不想使用領域開發人員狀態繁瑣的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? –