[英]Rename Realm table
我的领域计划中有一张Gift
表。 现在我需要将Gift.class
重命名为UserBonus.class
并添加一些新的参数(不是概率)。 这样做的正确方法是什么?
我知道realm.getTable()
可以返回我的表,问题是架构中存在旧的Gift
但事实上我没有Gift.class
(现在是UserBonus
和getTable()
将返回我新创建的表)所以我无法获得旧的礼品表值并将它们移动到新的奖励表。
我看到它的唯一方法是留下空的Gift.class
并仅用于迁移。
谢谢你的建议,
Yakiv
也许我的答案会过时,但现在Android上的Realm中有一个方法'rename',它可以重命名方案中的表(模型)。 代码将是这样的:
RealmSchema schema = Realm.getInstance().getSchema();
schema.rename("OldModelName", "NewModelName");
它应该工作!
您还可以看到迁移中的所有功能(2015年6月25日起) - https://github.com/realm/realm-java/pull/1239
目前我确实实现了如下:
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.