我试图限制我的领域查询的结果。如果我有一百万张唱片,并调用Swift prefix
函数,它会触及所有的一百万张唱片吗?
我想做的是:
let objects = realm.objects(BookRealmObject.self)
.sorted(byKeyPath: "createdAt", ascending: false)
let items: [BookType] = {
guard let limit = request.limit, limit > 0 else {
return objects.map { Book(from: $0) }
}
return objects.prefix(limit).map { Book(from: $0) }
}()
从prefix
返回的类型是Slice<Results<Element>>
。无论调用方是否请求限制,我都需要将其转换为普通对象以传递给不同的线程。
这是正确的方法来处理这个问题,还是有一种更优化、更简洁的方法来做到这一点?
发布于 2019-05-28 03:53:40
正如我们在文档中所能找到的
因为领域中的查询很懒,所以执行这种分页行为根本不需要,因为领域只在显式访问查询结果之后才会加载对象。
因此,当您获得对象的前缀时,它仍然应该是惰性的,但是当您使用map
访问对象时,就失去了惰性特性。
https://stackoverflow.com/questions/56340901
复制