Очистить старые объекты Realm?

Есть ли простой способ удалить старые данные из базы данных Realm? Например, если какой-либо объект в один прекрасный день сохранил автоматически удалить его?

Альтернативой может быть добавление поля с датой и извлечением и сравнение его, чтобы решить, удалять, но вопрос в том, имеет ли Realm метод для достижения этого.

Я уже видел некоторые подобные вопросы (как этот) об этом, , но не для Android (или Java), в Realm docs единственный подобный подход, который я нашел, миграции.

Вопрос в том, есть ли другой способ автоматического удаления старые объекты из Realm, такие как условие, когда мы храним данные, параметр, конфигурацию или метод Realm, а не просто сравнивать каждый раз. Очевидно, что с помощью запроса мы можем устранить любой объект что мы хотим.

Спецификация связанного вопроса (а не ответ) заключается лишь в том, чтобы пояснить, что это не вопрос на основе Swift, а не как его дубликат на первый взгляд.

+18
источник поделиться
4 ответа

Добавить поле с датой и запросить те, которые вы хотите удалить, на основе

Затем вы можете сделать

 realm.where(MyClass.class)
    .lowerThan("date", someDate)
    .findAll()
    .deleteAllFromRealm()

EDIT:

Вопрос в том, есть ли другой способ автоматического удаления старых объектов из Realm, таких как условие, когда мы храним данные, параметр, конфигурацию или метод Realm, а не просто сравниваем каждый раз.

Нет

Очевидно, что с помощью запроса мы можем устранить любой желаемый объект.

Связанный ответ на основе Swift делает то же самое.

+7
источник

Нет, в Realm нет такой функциональности.

Ваша альтернатива хороша, но я не рекомендую использовать фоновое обслуживание для удаления данных, поэтому проверяйте/удаляйте данные при запросе.

+5
источник

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()
+3
источник

Установите диспетчер аварийных сообщений на каждый день (24-часовой интервал) В обратном вызове диспетчера аварийных сообщений просто используйте следующий код, чтобы удалить старые данные

realm.where(BeanClass.class)
    .lowerThan("date", currentDate)
    .findAll()
    .deleteAllFromRealm();
+3
источник

Посмотрите другие вопросы по меткам или Задайте вопрос