Подтвердить что ты не робот

Что случилось с удалением элементов из realm.io? RealmException "Удаление объекта не поддерживается".?

Я пытаюсь удалить последний объект из базы данных Realm.io на основе запроса, например:

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

Это точно так же, как в инструкции Realm.io об удалении:

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

Но когда я выполняю код, он всегда прерывается с помощью RealmException

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

Затем я посмотрел исходный код RealmResults.java и нашел следующее: enter image description here Поэтому неудивительно, что он продолжает сбой, removeLast() ничего не делает, только выдайте ошибку!

Итак, мой вопрос: Как я могу удалить объект из базы данных??

Я использую realm.io 0.77 (скомпилируйте 'io.realm: realm-android: 0.77.0') на Android.

Я ценю вашу помощь в этом!

4b9b3361

Ответ 1

Я связался с поддержкой Realm.io, ожидая ответа. Тем временем:

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

работает эквивалентно

databaseLocations.removeLast()

поэтому его можно использовать в качестве обходного пути.

Изменить: поддержка сообщила мне, что они исправляют ее для будущих версий и рекомендуют использовать обходное решение, которое я опубликовал в среднем.

Ответ 2

Если вы хотите удалить все объекты, я бы создал цикл while следующим образом:

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