У меня есть два варианта использования. Во-первых, я хотел бы отобразить результаты выборки с сервера algolia в виде таблицы. Всякий раз, когда я прокручиваю вниз до конца, для получения новых данных должна отправляться другая выборка.
Во-вторых, у меня есть другое табличное представление, которое содержит различные разделы / категории. Всякий раз, когда я нажимаю на определенный раздел, я хочу просто загрузить соответствующую «часть» объектов из Алголии. В настоящее время максимальное количество объектов должно быть 50. Но опять же, я не хочу загружать 50 объектов одновременно. Они должны быть загружены в соответствии с прокруткой моего табличного представления.
У меня есть следующий код для «отложенной выборки»
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
if (challengeArray.count > (10 * i)) {
PAGINATION = PAGINATION + 1
i = i + 1
}
else {
return
}
// if last row of the table view is reached, load the next items
if indexPath.row == challengeArray.count - 1 {
algoliaSearch.fetchChallengeInformationBySearchValue(completionHandler: { (challengeArray) in
// if there is no data, we can return from the function
if (challengeArray.count == 0) {
return
}
for challengeObject in challengeArray {
let results = self.challengeArray.filter { $0.id == challengeObject.id}
if (results.count == 0) {
self.challengeArray.append(challengeObject)
}
}
self.mainCollectionView?.reloadData()
}, searchValue: "", page: PAGINATION)
}
}
Я пытаюсь использовать значение для PAGINATION, которое увеличиваетсявсякий раз, когда загружается определенное количество (10) объектов, и я прокручиваю до конца, чтобы выбрать следующие 10 объектов.
Может кто-нибудь помочь мне с обоими вариантами использования, пожалуйста?