领土清理旧物体

时间:2015-11-10 22:54:44

标签: ios realm

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

1 个答案:

答案 0 :(得分:11)

Realm本身没有默认的缓存过期机制,但是就像你说的那样,向每个对象添加NSDate属性并简单地执行查询以检查date属性较旧的对象是一件相对简单的事情。在你的应用程序内定期24小时。

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

<强>目标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)

我希望有所帮助!