首页 > 解决方案 > 查询特定项目的最佳方法

问题描述

我有一个清单

传感器

我的领域数据库中的项目。

class Sensor: Object {

@objc dynamic var sensorID: Int8 = 0
@objc dynamic var value: Int16 = 0
@objc dynamic var timestamp: Int64 = 0
@objc dynamic var location: Location?
@objc dynamic var isIndoor: Bool = true
@objc dynamic var synced: Bool = false
}

获取所有物品的最佳方法是什么,这些物品比 24 小时新。

我写了这个方法

 func getSensors() -> [Sensor] {
    guard let items = RealmManager.shared.getObjectsWith(type: Sensor.self), let sensors = Array(items) as? [Sensor] else {
        return []
    }
    return sensors.filter({$0.value != -1 && Date(timeIntervalSince1970: TimeInterval($0.timestamp)).differenceInHours() < 24})
}

但是如果我有大约 100000 个项目,它首先获取所有项目,然后进行过滤,这不是最佳的并且需要很长时间。

如何编写查询以获取所有项目,超过 24 小时?

谢谢。

标签: swiftrealm

解决方案


推荐阅读