Swift-запросы JSON с более чем одной страницей

Я использую Alamofire и SwiftyJSON для доступа к API Youtube и получения количества плейлистов каналов. Моя проблема в том, что Youtube возвращает только 5 элементов на страницу (или запрос), и я не знаю, как получить доступ к остальным!

func getPlaylists() {
    Alamofire.request(.GET, playlistURL).validate().responseJSON { response in
        switch response.result {
        case .Success:
            if let value = response.result.value {
                let json = JSON(value)
                print(json["items"].count) //Always returns 5
            }
        case .Failure(let error):
            print(error)
        }
    }
}

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


person Jacobo Koenig    schedule 19.01.2016    source источник


Ответы (1)


Вы найдете ответ в документации API, возможно, здесь API данных YouTube.

Примечание: в своем запросе вы можете установить максимальное количество элементов на странице с параметром запроса: maxResults. Это может быть от 5 до 50, по умолчанию равно 5.

Когда вы получаете ответ, сервер возвращает JSON, содержащий значение JSON "nextToken": <string>. Используйте это значение в своем следующем запросе, где вы вставляете параметр запроса pageToken=<string>.

Вы можете изменить свой метод getPlaylists так, чтобы он принимал параметр nextToken: String. Первоначально вызывайте этот метод с пустой строкой или, лучше, с необязательным инициализированным значением nil.

В обработчике завершения извлеките значение "nextToken" из ответа JSON. Если он существует, вызовите метод с этим параметром. В противном случае вы получили все страницы.

Ваш метод getPlaylists также должен иметь обработчик завершения. Вызвать обработчик завершения, когда все страницы будут получены.

person CouchDeveloper    schedule 19.01.2016