シンプルレルムオブジェクトを初期化しようとしたとき、私はいくつかの奇妙な行動を経験してるに失敗しました。@PrimaryKey 0(ゼロ)とレルムオブジェクトを初期化し第二の目的
[{"id":0,"name":"Biatrix"},{"id":1,"name":"Bill"},{"id":2,"name":"O-ren"}]
私は次のような単純なレルムクラスを持っている:ここで
import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
import io.realm.annotations.Required;
public class Assassin extends RealmObject {
@PrimaryKey
private int id;
@Required
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
は、私は(Kotlinで)クラスを移入しようとする方法である:
val assassins = viperData.getJSONArray("assassins")
for (i in 0..(assassins.length() - 1)) {
val item = assassins.getJSONObject(i)
var assassin = realm.createObject(Assassin::class.java)
assassin.setId(item.getInt("id"))
assassin.setName(item.getString("name"))
}
私はそのように見えるJSONArrayを持っています
id = 0の最初の項目は正常に作成されますが、2番目の項目では例外io.realm.exceptions.RealmPrimaryKeyConstraintException: Value already exists: 0
が生成されます。その後、私はああ、オブジェクトが作成されたと思った。デフォルトではid = 0であり、その後は値を別のものに変更します。
...
public class Assassin extends RealmObject {
@PrimaryKey
private int id = -1;
...
を...それでも同じ例外を取得:それは出回っだから私はクラスで-1 = IDを設定した値0のアイテムを持っているので、それは失敗しています。
これはバグですか?ここに何か不足していますか?
更新
私は@PrimaryKey
注釈を削除し、クラスが正しく装着。
私はあなたの言うことを理解していますが、これは問題ではありません。ここでの問題は、なぜ私が提供する 'id'の値が明らかに一意である場合、初期化が失敗するのですか? – Ambran
失敗した場合は、明らかに一意ではありません。 – Wukash
または私は私の記事で提案したバグがあるかもしれませんが、値を数回チェックして確実に確認したので、間違いなくユニークです。私の更新を参照してください。 – Ambran