2014-12-01 2 views
18

Как мне обновить уже существующее значение с помощью realm DB в android?Оператор обновления в Realm android

Я пытался обновить его, но он добавляет, как новое значение только не overwritting его

+0

Пожалуйста, покажите нам свои усилия (соответствующую часть кода, где вы пытаетесь обновить). Только тогда мы сможем рассказать вам, где проблема. – DroidDev

+0

** см. Полный ответ с примером http://stackoverflow.com/questions/30933229/update-realm-object-android** –

ответ

35

Другой способ обновить существующий объект со всеми его полями в Realm БД используется метод realm.copyToRealmOrUpdate():

Object obj = new Object(); 
obj.setField1(field1); 
obj.setField2(field2); 
realm.beginTransaction(); 
realm.copyToRealmOrUpdate(obj); 
realm.commitTransaction(); 

Если объект имеет Первичный ключ, этот метод будет автоматически обновлять объект без дубликатов объектов :)

Подробнее: copyToRealmOrUpdate()

+1

Вы фактически не получаете никакой пользы от начала транзакции, прежде чем ваш объект будет создан. Поэтому я хотел бы предложить перенести эту первую строку перед copyToRealmOrUpdate(), чтобы она понятна. – bmunk

+0

Спасибо за совет, пост отредактировал :) –

+0

Этот ответ устарел? 'realm.copyToRealmOrUpdate (obj);' не требуется, если вы работаете с областью. Это необходимо, только если вы используете Retrofit, например: https://realm.io/docs/java/latest/#retrofit – Micro

6

Вы можете метод пользователя insertOrUpdate сделать this.Hope это помогает

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

        objectToEdit.setNewValue("string"); 
        realm.insertOrUpdate(); 
       } 
      }); 
Смежные вопросы