领域清理旧对象
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)
希望对您有所帮助!
我刚刚开始在我的 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)
希望对您有所帮助!