【发布时间】:2015-11-10 22:54:44
【问题描述】:
我刚刚开始在我的 iOS 应用程序中使用 Realm 进行缓存。该应用程序是一个商店,有商品。当用户浏览商品时,我将商品添加到数据库中。但是,由于这些项目不会永远保持可用,因此将它们保留在数据库中的某个时间点(例如 24 小时)是没有意义的。有没有一种首选方法可以在一段时间后批量过期对象?还是最好在每次应用启动时添加日期属性并查询这些对象?
【问题讨论】:
我刚刚开始在我的 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];
斯威夫特
let yesterday = NSDate(timeIntervalSinceNow:-(24*60*60))
let itemsToDelete = Realm().objects(ItemObject).filter("addedDate < \(yesterday)")
Realm().delete(itemsToDelete)
希望对你有所帮助!
【讨论】: