2015-10-06 80 views
0

有我的模型:境界关系领域总是空

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字段空值始终。我该如何解决这个问题?

+1

一个附注,你如何获得代码来编译,而不用为你的'RealmObject'设置setter和getters? –

+1

你的代码工作正常与我顺便说一句。 –

+0

同样的问题。你找到解决方案吗? – toidiu

回答

1

我在想我的对象不能直接为空,但重点是Realm使用代理模型,而代理实际上并不为null。

7

该代码看起来正确。如果通过检查调试窗口中的chat1Test字段得到空值,您将得到一个空值。这是预料之中的。

Realm将生成代理类并覆盖代理类中的getters/setters。所以,如果你尝试

RMyTest rProfile = chat1.getTest(); 

我相信你可以得到的,而不是null相应RMyTest对象。

此行为记录在here

+0

使用getters帮助。互联网上唯一的答案帮助我! – tieorange