我覺得你的情況直接字段訪問不是在轉化這次。
如果你改變當前的代碼你會得到正確的結果:
realm.where(MessageBean.class)
.equalTo("userId", PreferenceUtils.getUserId(UIUtils.getContext()))
.or()
.equalTo("userId", PreferenceUtils.STRING_DEFAULT)
.equalTo("type", PushType.PERSONAL_ACTIVITY)
.or()
.equalTo("type", PushType.ARTICLE)
.equalTo("read", 0)
.findAll()
.get(0)
.read
與
RealmResults<MessageBean> results = realm.where(MessageBean.class)
.beginGroup()
.equalTo("userId", PreferenceUtils.getUserId(UIUtils.getContext()))
.endGroup()
.or()
.beginGroup()
.equalTo("userId", PreferenceUtils.STRING_DEFAULT)
.equalTo("type", PushType.PERSONAL_ACTIVITY)
.endGroup()
.or()
.beginGroup()
.equalTo("type", PushType.ARTICLE)
.equalTo("read", 0)
.endGroup()
.findAll();
MessageBean message = results.get(0);
int result = message.read; // <-- will return proper value
所以,你應該首先存儲results.get(0)
到一個局部變量,這樣的Realm-Transformer
就能來檢測它。 (雖然公平,我認爲應該即使沒有這個伎倆工作)。
如果您使用Accessor方法,那麼即使沒有通過此代碼行運行Realm-Transformer,它也會使用代理訪問器。
在調試器中,檢查獲取的值而不是對象本身的字段值是關鍵。
你正在使用什麼版本的Realm? – EpicPandaForce
版本是1.2.0 – chentao7v
有趣的是,這個方法是在擴展RealmObject的類的構造函數中嗎? – EpicPandaForce