我正在使用Realm android并希望使用Migration更改现有主键的数据类型。
我使用以下代码进行迁移
schema.get("Test")
.addField("id_new", String.class)
.removeField("id")
.addPrimaryKey("id_new")
.renameField("id_new", "id");
上面的代码是在不中断的情况下迁移模式,但是如果我尝试在新模式中写入数据则会失败。
我不想保留任何旧数据,因此不使用转换方法。
答案 0 :(得分:1)
如果您不想保留数据,可以只调用构建器的 deleteRealmIfMigrationNeeded()方法:
RealmConfiguration config = new RealmConfiguration.Builder()
.deleteRealmIfMigrationNeeded()
.build();
但我认为,它只适用于应用程序的开发周期。
发布的应用程序必须具有真正的迁移脚本。对于你的问题,我建议使用:
schema.get("Test")
.addField("id_new", String.class, FieldAttribute.PRIMARY_KEY)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
// yuors transformation from id to id_new
}
})
.removeField("id")
.renameField("id_new", "id");
另见: