领域清理旧对象

Realm Cleaning Up Old Objects

我刚刚开始在我的 iOS 应用程序中使用 Realm 进行缓存。该应用程序是一家商店,有商品。当用户浏览商品时,我将商品添加到数据库中。然而,由于这些项目不会永远可用,因此将它们保留在数据库中超过某个时间点(比方说 24 小时)就没有意义了。有没有一种首选方法可以在一段时间后批量处理过期对象?或者最好添加日期 属性 并在每次应用启动时查询这些对象?

Realm本身并没有默认的缓存过期机制,但是就像你说的,给每个对象添加一个NSDate 属性,然后简单的执行一个查询来检查是一件比较简单的事情日期 属性 早于 24 小时的对象在您的应用中定期出现。

逻辑在两种语言中可能看起来像这样:

Objective-C

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

Swift

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

希望对您有所帮助!