【问题标题】:Does realm support LIMIT query in iOS?领域是否支持 iOS 中的 LIMIT 查询?
【发布时间】:2018-08-02 06:46:05
【问题描述】:

我在我的项目中本地存储电话通讯录中的联系人列表,为此我正在使用领域数据库,现在我遇到的问题是获取一批联系人(如分页)。所以考虑使用限制查询来做到这一点。但是没有使用领域的 LIMIT 查询的示例。有没有其他方法可以在领域中进行分页?

【问题讨论】:

    标签: ios iphone swift realm


    【解决方案1】:

    您不需要像Realm Swift Queries are lazily loaded 那样自行实现获取批次。 “所有查询(包括查询和属性访问)在 Realm 中都是惰性的。只有在访问属性时才会读取数据。”

    所以您的查询速度非常快,但访问数据本身不如使用数组快。

    【讨论】:

    • 是的,领域很快,但我需要将这些记录发送到服务器,因为我想将本地数据库中的记录分批。例如,假设我的本地数据库中有 1000 条记录,那么我想将它们全部发送到我的服务器,每批 100 条,因此一次将有 100 条记录同步到我的服务器。
    • 只需从结果中检索前 100 个对象并将它们发送给let results: Results<YourObject> = realm.objects(YourObject.self)var dataArray: [YourObject] = []for i in 0 ..< min(100, results.count) {dataArray[i] = results[i]}// send API Request
    【解决方案2】:

    在 Realm swift 的文档站点 (https://realm.io/docs/swift/latest/) 中,他们说

    由于 Realm 中的查询是惰性的,因此根本不需要执行这种分页行为,因为 Realm 只会在查询结果被显式访问后加载对象。

    如果出于 UI 相关或其他实现原因,您需要查询中的特定对象子集,则只需获取 Results 对象,然后只读取您需要的对象即可。

    因此,您只需简单地获取所有内容并处理您需要的内容。来自文档站点的示例

    // Loop through the first 5 Dog objects
    // restricting the number of objects read from disk
    let dogs = try! Realm().objects(Dog.self)
    for i in 0..<5 {
        let dog = dogs[i]
        // ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多