领域分批获取

时间:2015-11-14 11:00:02

标签: ios objective-c database swift realm

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

例如,假设我有一个领域对象AuthorBookAuthor有一个名为books的属性,该属性是多对多关系(类型{{1} })

现在我有一个视图控制器,可以获得List<Book>个对象并展示他的所有书籍。 目前我只使用Author作为数据,但我想分批获取这些书籍,让用户滚动查看下一批书籍。

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

1 个答案:

答案 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懒惰地加载所有对象,加载所有对象没有性能损失。