我的领域方案中有一个Gift
表。现在我需要将Gift.class
重命名为UserBonus.class
并添加一些新的参数(不是概率)。这样做的正确方法是什么?
我知道realm.getTable()
可以将表格返回给我,问题是架构中存在旧Gift
但实际上我没有Gift.class
(现在它是UserBonus
} getTable()
将返回我新创建的表)所以我无法得到旧礼品表值并将它们移动到新的奖金表。
我看到它的唯一方法是留空Gift.class
并仅将其用于迁移。
感谢您的任何建议,
Yakiv
答案 0 :(得分:4)
也许我的答案会过时,但现在Android上的Realm中有一个方法'rename',它可以重命名方案中的表(模型)。 代码将是这样的:
RealmSchema schema = Realm.getInstance().getSchema();
schema.rename("OldModelName", "NewModelName");
它应该有效!
此外,您还可以查看迁移中的所有功能(2015年6月25日起) - https://github.com/realm/realm-java/pull/1239
答案 1 :(得分:2)
目前我的确实现如下:
UserBonus.class
Gift.class
将所有数据从Gift
表复制到UserBonus
表
// added bonus types
Table userBonus = realm.getTable(UserBonus.class);
userBonus.addColumn(ColumnType.STRING, "localId");
userBonus.addColumn(ColumnType.INTEGER, "type");
userBonus.addColumn(ColumnType.INTEGER, "date");
userBonus.addColumn(ColumnType.STRING, "userName");
userBonus.addColumn(ColumnType.STRING, "userNumber");
userBonus.addColumn(ColumnType.STRING, "credits");
// move Gift to UserBonus
RealmResults<Gift> gifts = realm.where(Gift.class).findAll();
for (Gift gift :gifts) {
userBonus.add(
gift.getLocalId(),
UserBonus.TYPE_FRIEND,
gift.getDate(),
gift.getUserName(),
gift.getUserNumber(),
gift.getCredits()
);
}
realm.where(Gift.class).findAll().clear();