2016-04-16 171 views
0

我想實現一個通用領域包裝。所以,我可以傳遞一個對象與它的類來添加/更新或獲取。我正在使用領域瀏覽器來確認我正確保存數據,但是當我執行getAll查詢時,我收到了正確數量的正確數據結構的數組,但所有字段均爲默認值或爲空。 這裏是我的代碼:無法從領域正確檢索數據

添加RealmModel:(UserRealmModel)

@Override 
public void putAll(Collection<RealmObject> realmModels) { 
    mRealm = Realm.getDefaultInstance(); 
    mRealm.beginTransaction(); 
    mRealm.copyToRealmOrUpdate(realmModels); 
    mRealm.commitTransaction(); 
} 

GetAllRealmModels:(UserRealmModel)

@Override 
public RealmResults getAll(Class clazz) { 
    return Realm.getDefaultInstance().allObjects(clazz); 
} 

我也試過:

@Override 
public RealmResults getAll(Class clazz) { 
    return Realm.getDefaultInstance().where(clazz).findAll(); 
} 

clazz中= UserRealmModel。

輸出:

GetAll Output in debugger

但什麼有趣的是,在如截圖所示的調試視圖,toString方法顯示了正確的數據!

請幫助:)

回答

1

Zeyad先生, 我通過境界文件都是爲了你。他們有一個很好的書面文件,提供你的問題的例子。

他們說,

添加Android Studio中的手錶上RealmObject將顯示字段的值。不幸的是,這些值是錯誤的,因爲字段值沒有被使用。 Realm在後臺創建代理對象並覆蓋獲取者和設置者,以訪問Realm中的持久數據。添加任何訪問器的手錶將產生正確的值

See the Image

在調試程序上方的圖像已經停止上線113有三個表值,該人變量和person.getName()和person.getAge()訪問。第107行至第111行的代碼通過更改名稱和年齡來更改人員實例。這些值然後被保存在一個事務中。在第113行中,調試器當前已暫停,人員監視實例正在報告字段值並且它們不正確。使用person.getName()和person.getAge()的訪問器的監視值報告的值是正確的。

請注意,.toString()方法將輸出正確的值,但監視面板不會(當觀察RealmObject的變量時)。

Read More Here

希望它有幫助!

+0

感謝您的支持。這有點令人困惑,因爲我將領域對象的結果投射到我的視圖模型,所以我失去了所有的數據 –