【发布时间】:2017-05-10 16:11:51
【问题描述】:
今天我更改了我的应用程序领域架构,因此我实施了迁移。 在迁移中,我只需要添加一个字段,所以我这样做了:
if (oldVersion == 0) {
RealmObjectSchema class = schema.get("Class");
class.addField("addedField", boolean.class, null)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.set("addedField", false);
}
});
oldVersion++;
}
但这抹去了我领域中的一切,我没有更多数据了。
这不是问题,因为我仍处于开发阶段。我进行迁移而不是卸载/重新安装应用程序只是为了了解如何实现 RealmMigration。
我做错了吗?我把所有东西都抹掉了正常吗?我需要添加更多代码吗? 我已经阅读了文档并查看了示例应用程序。提供的代码没有更多内容。
领域配置:
Realm.init(this);
RealmConfiguration newConfig = new RealmConfiguration.Builder()
.name("myRealm.realm")
.schemaVersion(1)
.migration(new SchemaMigration())
.build();
至少:
Realm realm = Realm.getInstance(newConfig);
编辑:
我通过删除 name("myRealm.realm") 解决了这个问题。在第一次安装时,我没有使用RealmConfiguration,所以领域的名称是:“default.realm”。谢谢大家的支持和回答!
【问题讨论】:
-
您可能在 RealmConfiguration.Builder 上设置了
deleteIfMigrationNeeded(),在尝试迁移之前会对其进行检查。 -
不,我没有。我也会用配置代码更新答案
标签: java android realm realm-migration