[英]Realm Migration Duplicated values
我想做一個遷移(Realm 87.2),我之前做過其他工作,但這並不容易,我也不知道為什么
我以前的Categoriy.class
private int code;
private String title;
private String category;
private int order;
private boolean visible;
新的Category.class
@PrimaryKey @Index private String id;
private int code;
private String title;
private String category;
private int order;
private boolean visible;
和在Migration.class
public class Migration....
int i = 0;
.....
if(oldVersion == 7) {
schema.get("Category").addField("id", String.class, FieldAttribute.PRIMARY_KEY).transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.set("id", UtilsForAll.getRandomUUID()); //Get Random UUID for previsoly added categories
obj.set("order", i);
i++;
}
});
oldVersion++;
}
} //finishClass
由於某種愚蠢的原因,我不知道我在做什么錯,它不斷給我這個錯誤:
java.lang.IllegalArgumentException:非法參數:字段“ id”不能是主鍵,它已經包含重復的值:
什么? 我很確定,在categorie類中沒有重復的值。
PS:這只是在我真正使用遷移功能並且有以前的類別記錄時發生
---------------------編輯22/03
嘗試了此作為Emanuelez的建議:
if(oldVersion == 7) {
schema.get("Category").addField("id", String.class);
schema.get("Category").transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.set("id", UtilsForAll.getRandomUUID()); //Get Random UUID for previsoly added categories
}
});
oldVersion++;
schema.get("Category").setPrimaryKey("id");
}
錯誤變成了這個-
io.realm.exceptions.RealmMigrationNeededException:字段'id'不支持現有Realm文件中的空值。 從字段“ id”中刪除@Required或@PrimaryKey或使用io.realm.internal.Table.convertColumnToNotNullable()進行遷移。
我ve tried
.setNullable(“ id”,true);`
一切也沒有改變
要添加新的主鍵字段,您不能僅添加具有屬性的字段,因為所有這些字段都將初始化為其默認值,即全部相等,這會破壞主鍵協定。
要以正確的方式執行此操作,您必須:
作為進一步參考,我建議您看一下RealmObjectSchema類的單元測試,可以在這里找到
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.