我正在使用领域,我想知道是否有办法批量获取对象。
例如,假设我有一个领域对象Author
和Book
,Author
有一个名为books
的属性,该属性是多对多关系(类型{{1} })
现在我有一个视图控制器,可以获得List<Book>
个对象并展示他的所有书籍。
目前我只使用Author
作为数据,但我想分批获取这些书籍,让用户滚动查看下一批书籍。
我认为调用author.books
并不像数据库查询那么昂贵,因为领域懒惰地加载这些对象,但我仍然喜欢小批量加载,因为它具有其他性能影响,例如,如果我使用整个author.books
作为我的数据源,将为每个元素调用一些表视图委托方法,如author.books
,这可能会影响性能。
答案 0 :(得分:2)
Realm在SQL中没有像limit
这样的功能。但您可以控制自己显示的数字。
如果您想限制要显示的数字,可以先使用tableView(_:, numberOfRowsInSection:)
方法返回小数。
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return batchSize * batchCount // e.g. batchSize == 20
}
根据需要增加显示数量。例如,它使批量大小加倍并且#34;加载更多&#34;按下按钮。
如您所知,Realm懒惰地加载所有对象,加载所有对象没有性能损失。