簡體   English   中英

Android領域遷移:添加新領域列表列

[英]Android Realm Migration: Adding new Realm list column

我正在使用Realm v0.80.1,我正在嘗試為我添加的新屬性編寫遷移代碼。 該房產是RealmList。 我不知道如何正確添加新列或設置一個值。

我有:customRealmTable.addColumn(,“list”);

一旦正確添加了列,我將如何設置list屬性的初始值? 我想做的事情如下:

customRealmTable.setRealmList(newColumnIndex,rowIndex,new RealmList <>());

從Realm v1.0.0開始(也許之前),你可以簡單地調用RealmObjectSchema#addRealmListField(String, RealmObjectSchema)鏈接到javadoc )來實現這一點。 例如,如果您嘗試將類型為RealmList<Permission>permissions字段添加到User類,則需要編寫:

if (!schema.get("User").hasField("permissions")) {
    schema.get("User").addRealmListField("permissions", schema.get("Permission"));
}

也有在領域的遷移文檔的例子在這里 為方便起見,這里是addRealmListField的完整javadoc:

/**
 * Adds a new field that references a {@link RealmList}.
 *
 * @param fieldName  name of the field to add.
 * @param objectSchema schema for the Realm type being referenced.
 * @return the updated schema.
 * @throws IllegalArgumentException if the field name is illegal or a field with that name already exists.
 */

您可以在此處的示例中看到添加RealmList屬性的示例: https//github.com/realm/realm-java/blob/master/examples/migrationExample/src/main/java/io/realm/examples/realmmigrationexample /model/Migration.java#L78-L78

相關代碼是此部分:

   if (version == 1) {
            Table personTable = realm.getTable(Person.class);
            Table petTable = realm.getTable(Pet.class);
            petTable.addColumn(ColumnType.STRING, "name");
            petTable.addColumn(ColumnType.STRING, "type");
            long petsIndex = personTable.addColumnLink(ColumnType.LINK_LIST, "pets", petTable);
            long fullNameIndex = getIndexForProperty(personTable, "fullName");

            for (int i = 0; i < personTable.size(); i++) {
                if (personTable.getString(fullNameIndex, i).equals("JP McDonald")) {
                    personTable.getRow(i).getLinkList(petsIndex).add(petTable.add("Jimbo", "dog"));
                }
            }
            version++;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM