2015-09-18 4 views
6

Ich habe eine Gift Tabelle in meinem Realm-Schema. Jetzt muss ich Gift.class zu UserBonus.class umbenennen und einige neue params (kein prob) hinzufügen. Was ist der richtige Weg, dies zu tun?Rename Realm Tabelle

Ich weiß, dass realm.getTable() mir den Tisch zurückkehren kann, ist das Problem, dass alte Gift im Schema vorhanden ist, aber auf der Tat nicht, daß ich Gift.class haben (jetzt ist es UserBonus und getTable() kehrt mir neu erstellte Tabelle), so kann ich nicht alt werden Geschenktabellenwerte und verschiebe sie in die neue Bonus-Tabelle.

Die einzige Möglichkeit sehe ich, Gift.class leer und verwenden Sie es nur für die Migration.

Vielen Dank für jede Beratung,
Yakiv

Antwort

2

Derzeit ich es wie folgt umgesetzt haben:

  • neue UserBonus.class
  • hinzugefügt
  • Kopie an Gift.class hinzugefügt @deprecated alle Daten von Gift Tabelle zu UserBonus Tabelle

    // 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(); 
    
4

Vielleicht wird meine Antwort veraltet, aber jetzt in Realm auf Android gibt es eine Methode ‚umbenennen‘, die Tabelle umbenennen (Modell) in Schema. -Code wird wie folgt sein:

RealmSchema schema = Realm.getInstance().getSchema(); 
schema.rename("OldModelName", "NewModelName"); 

Und sollte es funktionieren!

Sie können auch alle Funktionen in Migration (ab 25 Jun 2015) - https://github.com/realm/realm-java/pull/1239