Очистить старые объекты Realm?
Есть ли простой способ удалить старые данные из базы данных Realm? Например, если какой-либо объект в один прекрасный день сохранил автоматически удалить его?
Альтернативой может быть добавление поля с датой и извлечением и сравнение его, чтобы решить, удалять, но вопрос в том, имеет ли Realm метод для достижения этого.
Я уже видел некоторые подобные вопросы (как этот) об этом, , но не для Android (или Java), в Realm docs единственный подобный подход, который я нашел, миграции.
Вопрос в том, есть ли другой способ автоматического удаления старые объекты из Realm, такие как условие, когда мы храним данные, параметр, конфигурацию или метод Realm, а не просто сравнивать каждый раз. Очевидно, что с помощью запроса мы можем устранить любой объект что мы хотим.
Спецификация связанного вопроса (а не ответ) заключается лишь в том, чтобы пояснить, что это не вопрос на основе Swift, а не как его дубликат на первый взгляд.
Ответы
Ответ 1
Добавить поле с датой и запросить те, которые вы хотите удалить, на основе
Затем вы можете сделать
realm.where(MyClass.class)
.lowerThan("date", someDate)
.findAll()
.deleteAllFromRealm()
EDIT:
Вопрос в том, есть ли другой способ автоматического удаления старых объектов из Realm, таких как условие, когда мы храним данные, параметр, конфигурацию или метод Realm, а не просто сравниваем каждый раз.
Нет
Очевидно, что с помощью запроса мы можем устранить любой желаемый объект.
Связанный ответ на основе Swift делает то же самое.
Ответ 2
Нет, в Realm нет такой функциональности.
Ваша альтернатива хороша, но я не рекомендую использовать фоновое обслуживание для удаления данных, поэтому проверяйте/удаляйте данные при запросе.
Ответ 3
Yupp вы можете удалить старые данные области так, как это,
realmConfiguration = new RealmConfiguration.Builder().build();
Realm.deleteRealm(realmConfiguration);
realm = Realm.getInstance(realmConfiguration);
В приведенных выше строках вторая строка, которая
Realm.deleteRealm(realmConfiguration);
выполнить удаление старых данных области. Или вы можете удалить данные определенного класса, как,
realm.where(YourClass.class)
.lowerThan("date", currentDate)
.findAll()
.deleteAllFromRealm()
Ответ 4
Установите диспетчер аварийных сообщений на каждый день (24-часовой интервал)
В обратном вызове диспетчера аварийных сообщений просто используйте следующий код, чтобы удалить старые данные
realm.where(BeanClass.class)
.lowerThan("date", currentDate)
.findAll()
.deleteAllFromRealm();