2014-12-01 19 views
18

Come devo aggiornare un valore già esistente utilizzando DB realm in Android?Istruzione di aggiornamento in Realm android

Ho cercato di aggiornarlo, ma è l'aggiunta di un nuovo valore solo non overwritting si

+0

Vi preghiamo di mostrare i vostri sforzi (la parte rilevante del codice, in cui si sta cercando di aggiornare). Solo allora possiamo dirti dov'è il problema. – DroidDev

+0

** vedere la risposta completa con l'esempio http://stackoverflow.com/questions/30933229/update-realm-object-android** –

risposta

35

Un altro modo per aggiornare un oggetto esistente con tutti i suoi campi nel Reame DB sta usando il metodo realm.copyToRealmOrUpdate():

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

Se l'oggetto ha un chiave primaria, questo metodo aggiornerà l'oggetto automaticamente senza oggetti duplicati :)

Maggiori informazioni: copyToRealmOrUpdate()

+1

In realtà non si ottiene alcun vantaggio dall'iniziare la transazione prima di aver creato l'oggetto. Quindi suggerirei di spostare quella prima riga in basso prima di copyToRealmOrUpdate() per renderlo chiaro. – bmunk

+0

Grazie per il consiglio, post modificato :) –

+0

Questa risposta è obsoleta? 'realm.copyToRealmOrUpdate (obj);' non è necessario se stai lavorando con realm. Sarebbe necessario solo se si utilizza Retrofit ad esempio: https://realm.io/docs/java/latest/#retrofit – Micro

6

È possibile metodo utente insertOrUpdate fare this.Hope questo contribuisce

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

        objectToEdit.setNewValue("string"); 
        realm.insertOrUpdate(); 
       } 
      }); 
Problemi correlati