Я столкнулся с одной проблемой в реализации UITableViewDataSourcePrefetching .
У меня всего 62 записи в облаке, и я вызываю API, который возвращает 15 записей на страницу.
Я также реализовал метод prefetchRowsAt , который частично мне подходит.
Проблема в том, что описанный выше метод не возвращает все indexPath, который он собирается загрузить, поэтому, как вы можете видеть из журналов снизу, он достигает только 53, и в моем табличном представлении он показывает только 60 записей.
Indexpaths to fetch : [[3, 51], [3, 42], [3, 52], [3, 41], [3, 53], [3, 40], [3, 54], [3, 39], [3, 55], [3, 38], [3, 56], [3, 37], [3, 57], [3, 36], [3, 58], [3, 35], [3, 59], [3, 34], [3, 60], [3, 33]]
Indexpaths to fetch : [[3, 51], [3, 50], [3, 49], [3, 48], [3, 47], [3, 46], [3, 45], [3, 44], [3, 43]]
Indexpaths to fetch : [[3, 52]]
Indexpaths to fetch : [[3, 53]]
Вот мой метод реализации
extension MyViewController:UITableViewDataSourcePrefetching{
func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) {
#if DEBUG
print("Indexpaths to fetch : \(indexPaths)")
#endif
if indexPaths.contains(where: isLoadingCell) {
self.loadFurthersSessionNotification?()
}
}
}
private extension MyViewController {
func isLoadingCell(for indexPath: IndexPath) -> Bool {
if indexPath.section != 3{
return false
}
return (indexPath.row - 1) >= self.aryCloudObjects.count
}
}
Любая помощь будет оценена.
Спасибо