Realmで簡単なクエリを実行し、MyModelオブジェクトのリストを取得して、後でアプリの別の場所で使用する必要があります。 Realmにクエリを実行すると、各オブジェクトにnull値が含まれることがありますが、toStringは期待値を返します。
モデル:
@RealmClass
public class MyModel extends RealmObject implements Serializable {
public static final String KEY_MODEL = "key_myModel";
@PrimaryKey
private int id;
private String myStr;
private int myInt;
//.... getters and setters
@Override
public String toString() {
return "id = " + id
+ "\nmyStr = " + myStr
+ "\nmyInt = " + myInt;
}
}
値を保存するにはどうすればよいですか。
public static void storeModel(MyModel model) {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.copyToRealm(model);
realm.commitTransaction();
}
オブジェクトを取得するにはどうすればよいですか?
public static RealmList<MyModel> getNewElementsFromIndex(int indexFrom) {
Realm realm = Realm.getDefaultInstance();
RealmResults<MyModel> allValues = realm.where(MyModel).greaterThan("id", indexFrom).findAll();
RealmList<MyModel> finalList = new RealmList<MyModel>();
finalList.addAll(allValues.subList(0, allValues.size()));
return finalList;
}
getNewElementsFromIndex(value)を呼び出すと、アイテムのリストが表示されますが、このリスト内のすべてのアイテムには、パラメーターmyStr = nullおよびmyInt =があります。 =。
私は何が間違っているのですか?
管理対象レルムオブジェクトの場合、データはフィールドにコピーされません。プロキシゲッター/セッター呼び出しを介して取得します。
したがって、フィールドがnullであり、toString()が値を示しているという事実は、完全に予想され、十分に文書化された動作です。
値を確認するには、getterメソッドのウォッチを追加する必要があります。
ドキュメント を参照してください。