Mar*_*506 4 android realm realm-migration
在我当前的应用程序中,我HolderObject(RealmObject带有扩展名)带有long“ machineId”。在该应用程序的新版本中,HolderObject它将能够以RealmList的形式包含更多计算机。请参阅以下课程:
旧物件:
public class HolderObject extends RealmObject{
private long machineId;
//.. getters and setters
}
Run Code Online (Sandbox Code Playgroud)
新对象:
public class HolderObject extends RealmObject{
private RealmList<RealmLong> machineIds;
//.. getters and setters
}
Run Code Online (Sandbox Code Playgroud)
在RealmLong如下:
public class RealmLong extends RealmObject {
private long val;
//.. getters and setters
}
Run Code Online (Sandbox Code Playgroud)
要将所有旧HolderObjects 迁移到新对象,请使用我的自定义RealmMigration。如下所示:
public class CustomRealmMigration implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
RealmSchema schema = realm.getSchema();
schema.get("HolderObject")
.addRealmListField("machineIds", schema.get("RealmLong"))
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
RealmLong realmLong = realm.createObject(RealmLong.class);
realmLong.setVal(obj.getLong("machineId"));
obj.getList("machineIds").add(realmLong);
realm.commitTransaction();
realm.close();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
题:
obj.getList("machineIds").add(realmLong);,我得到了这个函数期望一个错误而DynamicRealmObject不是一个错误的错误RealmLong。如何RealmLong在此列表中添加一个?像这样做:
schema.get("HolderObject")
.addRealmListField("machineIds", schema.get("RealmLong"))
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
DynamicRealmObject realmLong = realm.createObject("RealmLong");
realmLong.setLong("val", obj.getLong("machineId"));
obj.getList("machineIds").add(realmLong);
}
})
.removeField("machineId");
Run Code Online (Sandbox Code Playgroud)
您创建的realmLong对象必须是DynamicRealmObject。
同样不要忘记在转换后删除旧字段。
请注意,迁移已经包装在事务中,您无需实例化领域对象并自己执行事务。
(奖金问题)这是解决此迁移问题的正确和最佳方法吗?
想法是好的,执行不是。往上看。
有关迁移的更多信息,请参阅本在github例子,当然还有文档。
| 归档时间: |
|
| 查看次数: |
1863 次 |
| 最近记录: |