在Realm android中更新语句

Din*_*inu 19 android realm

我应该如何在android中使用realm DB更新已存在的值?

我一直在尝试更新它,但它只是添加为新值而不是覆盖它

j_g*_*fer 39

使用Realm DB中的所有字段更新现有对象的另一种方法是使用以下方法realm.copyToRealmOrUpdate():

Object obj = new Object();
obj.setField1(field1);
obj.setField2(field2);
realm.beginTransaction();
realm.copyToRealmOrUpdate(obj);
realm.commitTransaction();
Run Code Online (Sandbox Code Playgroud)

如果您的对象具有主键,则此方法将自动更新对象而不会出现重复对象:)

更多信息:copyToRealmOrUpdate()

  • @MicroR那么,替代方案是什么?如何更新Realm中的现有值?(我得到`Realm Database Error:Value已经存在:`如果我使用`createObject()`). (2认同)
  • 从文档:"使用主键可以使用copyToRealmOrUpdate()方法,该方法将查找具有此主键的现有对象,并在找到一个时更新它" (2认同)

Joh*_*ohn 6

您可以使用insertOrUpdate方法来执行此操作.希望这有帮助

  Realm.getDefaultInstance().executeTransaction(new Realm.Transaction() {
                @Override
                public void execute(Realm realm) {

                    objectToEdit.setNewValue("string");
                    realm.insertOrUpdate();
                }
            });
Run Code Online (Sandbox Code Playgroud)