簡體   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