【发布时间】:2018-08-02 06:46:05
【问题描述】:
我在我的项目中本地存储电话通讯录中的联系人列表,为此我正在使用领域数据库,现在我遇到的问题是获取一批联系人(如分页)。所以考虑使用限制查询来做到这一点。但是没有使用领域的 LIMIT 查询的示例。有没有其他方法可以在领域中进行分页?
【问题讨论】:
我在我的项目中本地存储电话通讯录中的联系人列表,为此我正在使用领域数据库,现在我遇到的问题是获取一批联系人(如分页)。所以考虑使用限制查询来做到这一点。但是没有使用领域的 LIMIT 查询的示例。有没有其他方法可以在领域中进行分页?
【问题讨论】:
您不需要像Realm Swift Queries are lazily loaded 那样自行实现获取批次。 “所有查询(包括查询和属性访问)在 Realm 中都是惰性的。只有在访问属性时才会读取数据。”
所以您的查询速度非常快,但访问数据本身不如使用数组快。
【讨论】:
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
在 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]
// ...
}
【讨论】: