批量获取领域

Realm fetch in batches

我正在使用realm,我想知道是否有办法批量获取对象。

例如,假设我有一个领域对象 AuthorBookAuthor 有一个名为 books 的 属性,它是一对多关系(输入List<Book>)

现在我有一个视图控制器,可以获取 Author 对象并显示他的所有书籍。 目前我只使用 author.books 作为数据,但我想分批获取书籍并让用户滚动查看下一批书籍。

我认为调用 author.books 作为数据库查询并不太昂贵,因为领域延迟加载那些对象,但我仍然更喜欢小批量加载,因为它有其他性能影响,例如如果我使用整个 author.books 作为我的数据源,一些 table 视图委托方法如 heightForRow 将被每个元素调用,这可能会影响性能。

Realm 没有 SQL 中的 limit 等功能。但是你可以自己控制要显示的数字。

如果要限制显示的个数,可以先returntableView(_:, numberOfRowsInSection:)方法中的小数

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return batchSize * batchCount // e.g. batchSize == 20
}

并根据需要增加显示数量。例如,它使批量大小加倍 "Load more" 按钮被按下。

如您所知,Realm 延迟加载所有对象,加载所有对象没有性能损失。