繁体   English   中英

重命名领域表

[英]Rename Realm table

我的领域计划中有一张Gift表。 现在我需要将Gift.class重命名为UserBonus.class并添加一些新的参数(不是概率)。 这样做的正确方法是什么?

我知道realm.getTable()可以返回我的表,问题是架构中存在旧的Gift但事实上我没有Gift.class (现在是UserBonusgetTable()将返回我新创建的表)所以我无法获得旧的礼品表值并将它们移动到新的奖励表。

我看到它的唯一方法是留下空的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
  • 将@Deprecated添加到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM