2015-10-06 123 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