在同一财产上发布更新Realm

时间:2016-04-20 05:31:53

标签: realm realm-list

我有一个类似

的列表
 List<ChatMessage> l = realm.where(ChatMessage.class).equalTo("msg_receive_status", "0").findAll();

现在我想要的是制作“msg_recieve_status”= 1

所以我尝试了,

    int count = l.size();
    realm.beginTransaction();
    for (int i = 0; i < count; i++) {
        ChatMessage m = l.get(i);
        m.setMsg_receive_status("1");
    }
    realm.copyToRealmOrUpdate(l);
    realm.commitTransaction();

但它根本不起作用。

  

我认为msg_receive_status正在更新RealmList实时。这就是问题所在。

1 个答案:

答案 0 :(得分:0)

您遇到了问题,因为查询结果是&#34; live&#34;,即它始终是最新的。我们正在合并下一版本的修补程序:https://github.com/realm/realm-java/pull/2124

此处描述了变通方法:https://github.com/realm/realm-java/issues/640#issuecomment-103798064

在您的情况下转换为:

List<ChatMessage> l = realm.where(ChatMessage.class).equalTo("msg_receive_status", "0").findAll();

realm.beginTransaction();
for (int i = l.size() -1; i >=0; i--) {
   l.get(i).setMsg_receive_status("1");
}
realm.commitTransaction();