我不知道为什么当我尝试更新Realm中的行而没有更新布尔字段时,我看到奇怪的行为被设置为false。
这里没有更新我的布尔字段,即noti
和adult
: -
案例1:
Realm.init(context);
Realm realm = Realm.getDefaultInstance();
UserDetails m2= new UserDetails();
m2.setUserid(1);
m2.setSort(paths_Vvalue[position]);
realm.beginTransaction();
realm.copyToRealmOrUpdate(m2);
realm.commitTransaction();
执行此代码后,他们(noti
和adult
)保存为 false ,甚至在 true
这是一个Bug吗? 一切正常,如果我添加和更新这些字段,如: -
案例2:
Realm.init(context);
Realm realm = Realm.getDefaultInstance();
UserDetails res = realm.where(UserDetails.class).equalTo("userid", 1).findFirst();
UserDetails m2= new UserDetails();
m2.setUserid(1);
m2.setSort(paths_Vvalue[position]);
m2.setAdult(res.getAdult()); //setting boolean
m2.setNoti(res.getNoti()); //setting boolean
realm.beginTransaction();
realm.copyToRealmOrUpdate(m2);
realm.commitTransaction();
在这种情况下一切正常,但仍然, 我在案例1 做错了什么,或者这是一个错误或领域的功能?任何提示都会非常感谢!
答案 0 :(得分:0)
考虑到您使用相同的主键和具有以下值的对象覆盖(“更新”)您的UserDetails
UserDetails m2= new UserDetails();
m2.setUserid(1);
m2.setSort(paths_Vvalue[position]);
//m2 adult is default `false`
//m2 noti is default `false`
...
realm.insertOrUpdate(m2);
您正在使用(非托管)项目更新现有对象,其中这些字段值为false
,因此它当然是false
。