[英]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.