批量获取领域
Realm fetch in batches
我正在使用realm,我想知道是否有办法批量获取对象。
例如,假设我有一个领域对象 Author
和 Book
,Author
有一个名为 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 延迟加载所有对象,加载所有对象没有性能损失。
我正在使用realm,我想知道是否有办法批量获取对象。
例如,假设我有一个领域对象 Author
和 Book
,Author
有一个名为 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 延迟加载所有对象,加载所有对象没有性能损失。