有我的模特:
public class RChat extends RealmObject {
@PrimaryKey
private String Id;
private RMyTest Test;
public RChat() {}
}
和
public class RMyTest extends RealmObject {
@PrimaryKey
private String myName;
public RMyTest() {
}
}
我正在使用这样:
mRealm = Realm.getInstance(this);
mRealm.beginTransaction();
final RChat chat = mRealm.createObject(RChat.class);
chat.setId("test");
RMyTest rProfile = mRealm.createObject(RMyTest.class);
rProfile.setMyName("alireza test");
chat.setTest(rProfile);
//mRealm.copyToRealmOrUpdate(chat);
mRealm.commitTransaction();
RChat chat1 = mRealm.where(RChat.class).equalTo("Id","test").findFirst();
但chat1
对象的Test
字段始终为空值。我该如何解决这个问题?
答案 0 :(得分:8)
代码看起来正确。如果通过检查调试窗口中的chat1
Test
字段获得null,则将获得空值。这是预期的。
Realm将生成代理类并覆盖代理类中的getter / setter。所以如果你试试
RMyTest rProfile = chat1.getTest();
我相信您可以获得相应的RMyTest
对象,而不是null
。
此行为记录在案here。
答案 1 :(得分:1)
我认为我的对象不能直接为null,但重点是Realm使用代理模型而代理实际上不是null。