Бесконечная прокрутка или ленивая загрузка с сервера Algolia - PullRequest
0 голосов
/ 01 декабря 2019

У меня есть два варианта использования. Во-первых, я хотел бы отобразить результаты выборки с сервера 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 объектов.

Может кто-нибудь помочь мне с обоими вариантами использования, пожалуйста?

...