2015-01-18 5 views
10

Ich versuche, das letzte Objekt aus der Datenbank Realm.io wie so basierend auf einer Abfrage zu löschen:Was ist mit dem Entfernen von Elementen aus realm.io passiert? RealmException "Das Entfernen von Objekten wird nicht unterstützt."?

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(); 
    } 

Das ist genau wie das, was am Realm.io instructions über Löschung geschrieben:

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

, wenn ich den Code ausführen es bricht immer mit einem RealmException

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

Dann habe ich auf den Quellcode von RealmResults.jav sah a und ich finde das: enter image description here Also kein Wunder, es stürzt ab, removeLast() tut nichts, nur einen Fehler zu werfen! Also meine Frage ist: Wie kann ich dann ein Objekt aus der Datenbank entfernen ?!

Ich benutze realm.io 0.77 (kompilieren 'io.realm: realm-android: 0.77.0') auf Android.

Ich schätze Ihre Hilfe zu diesem Thema!

Antwort

7

Ich habe den Support von Realm.io kontaktiert und warte auf eine Antwort. Für die Zwischenzeit:

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

arbeitet gleichwertig

databaseLocations.removeLast() 

so kann es als Behelfslösung verwendet werden.

Edit: Support hat mir gesagt, dass sie es für zukünftige Versionen reparieren und empfohlen, die Workaround zu verwenden, für die ich in der Zwischenzeit geschrieben habe.

+0

jedes Wort von Realm.io? – mfaerevaag

+1

Noch keine Updates, entweder haben sie das Problem nicht behoben oder sie haben meine Anfrage vergessen. Ich bin zu DBFlow für meine Datenbank-Bedürfnisse gewechselt, weil meiner Meinung nach Realm im Moment nicht reif genug ist. –

+4

Ich kann nicht glauben, dass sie nicht zumindest die Dokumentation aktualisiert haben, wie man etwas löscht. –

1

Wenn Sie alle Objekte löschen wollen, dann würde ich eine While-Schleife wie folgt erstellen:

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