2014-12-01 24 views
18

Làm cách nào để cập nhật giá trị hiện có bằng cách sử dụng DB realm trong Android?Tuyên bố cập nhật trong Realm android

Tôi đã cố gắng để cập nhật nó nhưng nó sẽ bổ sung như một giá trị mới chỉ không overwritting nó

+0

Hãy cho chúng ta thấy những nỗ lực của bạn (phần liên quan của mã của bạn, nơi bạn đang cố gắng để cập nhật). Chỉ khi đó chúng tôi mới có thể cho bạn biết vấn đề ở đâu. – DroidDev

+0

** xem câu trả lời đầy đủ với ví dụ http://stackoverflow.com/questions/30933229/update-realm-object-android** –

Trả lời

35

Một cách khác để cập nhật một đối tượng hiện với tất cả các lĩnh vực của mình trong Realm của bạn DB đang sử dụng phương pháp realm.copyToRealmOrUpdate():

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

Nếu đối tượng của bạn có một Primary Key, phương pháp này sẽ cập nhật các đối tượng tự động mà không cần đối tượng trùng lặp :)

Thông tin thêm: copyToRealmOrUpdate()

+1

Bạn thực sự không nhận được bất kỳ lợi ích nào từ việc bắt đầu giao dịch trước khi bạn tạo đối tượng của mình. Vì vậy, tôi sẽ đề nghị di chuyển dòng đầu tiên đó xuống trước copyToRealmOrUpdate() để làm cho nó rõ ràng. – bmunk

+0

Cảm ơn lời khuyên, bài chỉnh sửa :) –

+0

Câu trả lời này đã lỗi thời? 'realm.copyToRealmOrUpdate (obj);' là không cần thiết nếu bạn đang làm việc với lĩnh vực. Nó sẽ chỉ cần thiết nếu bạn đang sử dụng Retrofit ví dụ: https://realm.io/docs/java/latest/#retrofit – Micro

6

Bạn có thể sử dụng phương pháp insertOrUpdate làm this.Hope này giúp

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

        objectToEdit.setNewValue("string"); 
        realm.insertOrUpdate(); 
       } 
      }); 
Các vấn đề liên quan