具有多个页面的Swift-JSON请求

时间:2016-01-19 19:10:22

标签: json swift youtube-api alamofire swifty-json

我正在使用Alamofire和SwiftyJSON访问Youtube的API并获取频道的播放列表计数。我的问题是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)
        }
    }
}

有人可以告诉我如何访问下一组结果吗?

1 个答案:

答案 0 :(得分:0)

您可以在API文档中找到答案,可能在YouTube Data API

注意:在您的请求中,您可以使用查询参数设置每页的最大项目数:maxResults。这可以是5到50,默认等于5.

当您收到响应时,服务器返回包含JSON值"nextToken": <string>的JSON。在下一个请求中使用此值,您可以在其中插入查询参数pageToken=<string>

您可以修改getPlaylists方法,使其获取参数nextToken: String。最初使用空字符串或更好的方法调用此方法,将可选项初始化为nil

在完成处理程序中,从JSON响应中检索"nextToken"值。如果存在,请使用此参数调用方法。否则,你得到了所有页面。

您的方法getPlaylists也应该有一个完成处理程序。在检索完所有页面后调用完成处理程序。