copyToRealmOrUpdate域上的布尔字段设置为false

时间:2017-09-25 14:29:08

标签: java realm

我不知道为什么当我尝试更新Realm中的行而没有更新布尔字段时,我看到奇怪的行为被设置为false。 这里没有更新我的布尔字段,即notiadult: -

案例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();

执行此代码后,他们(notiadult)保存为 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 做错了什么,或者这是一个错误或领域的功能?任何提示都会非常感谢!

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