【问题标题】:Is Slice<Results> still lazy loaded in Realm?Slice<Results> 仍然在 Realm 中延迟加载吗?
【发布时间】:2019-05-28 11:10:50
【问题描述】:

我正在尝试限制我的 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&lt;Results&lt;Element&gt;&gt;。无论调用者是否请求限制,我都需要将其转换为普通对象以传递给不同的线程。

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

【问题讨论】:

    标签: arrays swift realm


    【解决方案1】:

    我们可以在docs 中找到:

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

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

    【讨论】:

      猜你喜欢
      • 2019-08-05
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多