Realm Очистка Старых Объектов

Я только начал использовать Realm для кэширования в своем приложении iOS. Приложение представляет собой магазин, с товарами. Как пользователь просматривает товар, я добавляю элементы в базу данных. Однако, поскольку эти элементы не остаются доступными навсегда, нет смысла держать их в базе данных за определенный момент, скажем, 24 часа. Есть ли предпочтительный способ пакетного истечения срока действия объектов через некоторое время? Или лучше всего добавить свойство date и запросить эти объекты при каждом запуске приложения?

1 ответов


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

логика потенциально может выглядеть примерно так в обоих случаях языки:

С

NSDate *yesterday = [[NSDate alloc] initWithTimeIntervalSinceNow:-(24 * 60 *60)];
RLMResults *itemsToDelete = [ItemObject objectsWhere:"addedDate < %@", yesterday];
[[RLMRealm defaultRealm] deleteObjects:itemsToDelete];

Свифт

let yesterday = NSDate(timeIntervalSinceNow:-(24*60*60))
let itemsToDelete = Realm().objects(ItemObject).filter("addedDate < \(yesterday)")
Realm().delete(itemsToDelete)

надеюсь, это помогло!