public class MessageBean extends RealmObject {
@PrimaryKey
private String id;
private int read;
public int getRead() {
return read;
}
public void setRead(int read) {
this.read = read;
}
}
吸气剂
答案 0 :(得分:3)
我认为您的案例中的直接字段访问目前尚未转换。
如果您更改当前代码,您将获得正确的结果:
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,它也会使用代理访问器。
关键是在调试器中检查获取的值,而不是对象本身的字段值。