arrays - Slice<Results> 是否仍然在 Realm 中延迟加载?

标签 arrays swift realm

我正在尝试限制我的 Realm 查询的结果。如果我有一百万条记录,我调用 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>> .无论调用者是否请求限制,我都需要将其转换为普通对象以传递给不同的线程。

这是处理此问题的正确方法,还是有更优化、更简洁的方法来执行此操作?

最佳答案

我们可以在 docs 中找到:

Since queries in Realm are lazy, performing this sort of paginating behavior isn’t necessary at all, as Realm will only load objects from the results of the query once they are explicitly accessed.

因此,当您获取对象的前缀时,它仍然应该是惰性的,但是当您使用 map 访问对象时,您将失去惰性特征。

关于arrays - Slice<Results> 是否仍然在 Realm 中延迟加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56340901/

相关文章:

c++ - 这个 'for' 循环打印 '1' 而不是数组值

java - 无法修复 java.lang.ArrayIndexOutOfBoundsException

swift - 为什么当我打开现有 Realm 数据库时结果始终为零

swift - 如何通过 NSDate 属性过滤 Realm 对象

java - JNI SetDoubleArrayRegion问题

c - C 中的二维数组是否需要使所有元素连续?

swift - 为什么 Swift 的这个通用集合实现不起作用?

ios - 核心数据未保存

arrays - 以 repeatedValue 作为序列的数组初始化谜语,Swift

android - Realm 查询所有具有特定值字段的实体