12

I need to do a simple query in Realm, retrieve a list of MyModel object and later use it somewhere else in my app. It happens that once I query Realm, each object has null values, but the toString returns the expected values.

Model:

@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;
}

}

How do I store the value:

public static void storeModel(MyModel model) {
        Realm realm = Realm.getDefaultInstance();
        realm.beginTransaction();
        realm.copyToRealm(model);
        realm.commitTransaction();
    }

How do I retrieve the objects:

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;
    }

When i call getNewElementsFromIndex(value) i get a list of item, but all items in this list have the parameter myStr = null and myInt = 0.

What am I doing wrong?

4

1 回答 1

13

对于托管领域对象,数据不会复制到字段中,您可以通过代理 getter/setter 调用获取它们。

因此,字段为 null 并且 toString() 显示值的事实完全是预期的并且有据可查的行为。

要查看这些值,您必须为 getter 方法添加监视。

请参阅文档

于 2016-08-25T13:39:43.760 回答