Что случилось с удалением элементов из 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 и нашел следующее:
Поэтому неудивительно, что он продолжает сбой, removeLast() ничего не делает, только выдайте ошибку!
Итак, мой вопрос: Как я могу удалить объект из базы данных??
Я использую realm.io 0.77 (скомпилируйте 'io.realm: realm-android: 0.77.0') на Android.
Я ценю вашу помощь в этом!
Ответы
Ответ 1
Я связался с поддержкой Realm.io, ожидая ответа. Тем временем:
RealmCustomLocation location = databaseLocations.get(databaseLocations.size() - 1);
location.removeFromRealm();
работает эквивалентно
databaseLocations.removeLast()
поэтому его можно использовать в качестве обходного пути.
Изменить: поддержка сообщила мне, что они исправляют ее для будущих версий и рекомендуют использовать обходное решение, которое я опубликовал в среднем.
Ответ 2
Если вы хотите удалить все объекты, я бы создал цикл while следующим образом:
while (location.size() > 0) {
location.removeLast();
}