迁移后,Realm.getInstance(context)不再起作用了。

4

迁移完成后,我无法再使用Realm.getInstance(context);

错误: java.lang.IllegalArgumentException: Configurations cannot have different schema versions if used to open the same file. 1 vs. 0

我发现必须使用之前创建的配置来进行迁移。

RealmConfiguration config1 = new RealmConfiguration.Builder(this)
                .schemaVersion(1)
                .migration(new Migration())
                .build();

现在我必须在每个使用

Realm.getInstance(context);

的地方重新创建config1,我以前为了避免任何类型的null而在每个方法中添加了这个。

public List<CustomClass> getAll() {
realm = Realm.getInstance(context);
....
}



public CustomClass getOneById(int id) {
realm = Realm.getInstance(context);
...
}

有时候在 DAO 类之外,我会动态更改使用的数据库,我会使用以下代码:

Realm.getInstance(context).beginTransaction();

change object

Realm.getInstance(context).commitTransaction();

现在我必须到处创建这个CONFIG1(RealmConfiguration)吗?还是有其他方法?
我尝试将Realm.setDefaultConfiguration(CONFIG1);添加到MainClass中,但没有成功=/。
我是否在每种方法调用时检查或避免对realm对象调用getInstance时出错了?
1个回答

7

使用Realm.setDefaultConfiguration(CONFIG1);来设置默认配置:

并使用Realm.getDefaultInstance();获取默认的 Realm 实例。


工作了,有趣的是第一次它沒有工作,謝謝你! - user2582318
这个回答很有道理,但如果现有的代码库由于在后台线程中运行而使用了Realm.getInstance(context)调用,该怎么办? - shawnwall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接