【发布时间】:2016-06-06 11:44:07
【问题描述】:
在我当前的应用程序中,我有一个 HolderObject(扩展 RealmObject)和一个 long 'machineId'。在应用程序的新版本中,HolderObject 将能够以 RealmList 的形式包含更多机器。请参阅以下课程:
旧对象:
public class HolderObject extends RealmObject{
private long machineId;
//.. getters and setters
}
新对象:
public class HolderObject extends RealmObject{
private RealmList<RealmLong> machineIds;
//.. getters and setters
}
其中RealmLong如下:
public class RealmLong extends RealmObject {
private long val;
//.. getters and setters
}
要将所有旧的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();
}
});
}
}
问题:
- 在
obj.getList("machineIds").add(realmLong);行中,我收到此函数需要DynamicRealmObject,而不是RealmLong的错误。如何将RealmLong添加到此列表中? - (奖励问题)这是解决此迁移问题的正确和最佳方法吗?
【问题讨论】:
标签: android realm realm-migration