2015-01-18 14 views
10

Próbuję usunąć ostatni obiekt z bazy Realm.io na podstawie kwerendy, tak jak poniżej:Co się stało z usuwaniem elementów z pliku realm.io? RealmException "Usuwanie obiektu nie jest obsługiwane."?

Realm realm = Realm.getInstance(this); 
    final RealmResults<RealmCustomLocation> databaseLocations = realm.where(RealmCustomLocation.class).findAllSorted("timeStamp", RealmResults.SORT_ORDER_DESCENDING); 
    if(databaseLocations.size() >= 4){ 
     realm.beginTransaction(); 
     databaseLocations.removeLast(); 
     realm.commitTransaction(); 
    } 

To jest dokładnie tak, jak to, co jest napisane na Realm.io instructions o wykreślenie:

realm.beginTransaction(); 
result.removeLast(); 
realm.commitTransaction() 

Ale kiedy wykonać kod zawsze zrywa z RealmException

io.realm.exceptions.RealmException: Removing object is not supported. 

Potem spojrzałem na kodzie źródłowym RealmResults.jav a i znajduję to: enter image description here Nic dziwnego, że się zawiesza, removeLast() nie robi nic, tylko rzuca błąd!

Moje pytanie brzmi: Jak mogę usunąć obiekt z bazy danych ?!

Używam realm.io 0.77 (kompilacja 'io.realm: realm-android: 0.77.0') na Androida.

Doceniam twoją pomoc w tej sprawie!

Odpowiedz

7

Kontaktowałem się ze wsparciem Realm.io, oczekując odpowiedzi. Dla międzyczasie:

RealmCustomLocation location = databaseLocations.get(databaseLocations.size() - 1); 
location.removeFromRealm(); 

działa odpowiednik

databaseLocations.removeLast() 

dzięki czemu może być używany jako obejście.

Edytuj: Wsparcie powiedziało mi, że naprawia to dla przyszłych wersji i zalecało użycie rozwiązania, które opublikowałem w międzyczasie.

+0

dowolne słowo z Realm.io? – mfaerevaag

+1

Brak aktualizacji, albo nie rozwiązały problemu, albo zapomniały o mojej prośbie. Przeniosłem się do DBFlow na potrzeby mojej bazy danych, ponieważ według mnie Realm nie jest wystarczająco dojrzały w tej chwili. –

+4

Po prostu wpadłem na to sam. Nie mogę uwierzyć, że nie zaktualizowali przynajmniej dokumentacji, jak usunąć coś. –

1

Jeśli chcesz usunąć wszystkie obiekty, a następnie chciałbym tworzyć pętli while tak:

while (location.size() > 0) { 
    location.removeLast(); 
}