2

我正在 Swift 中制作一个使用TMDB的 API 的应用程序。我为此找到了一个包装器。用 Cocoapods 安装它,现在我正在努力解决这些功能。我认为自述文件已过时。所以用这个函数我想检索一个流派列表。

例如框架中的一个函数:

    ///Get the list of tv or movie genres.
  open class func genres(_ api_key: String!, listType: GenresListType, language: String?, completion: @escaping (_ clientReturn: ClientReturn, _ data: [GenresMDB]?) -> ()) -> (){
    Client.Genres(api_key, listType: listType.rawValue, language: language, genreId: 0, page: nil, include_all_movies: nil, include_adult: nil, movieList: false){
      apiReturn in
      if(apiReturn.error == nil){
        completion(apiReturn, GenresMDB.initialize(json: apiReturn.json!["genres"]))
      }else{
        completion(apiReturn, nil)
      }
    }
  }

在自述文件中,函数是这样调用的(获取电影或电视类型的列表):

GenresMDB.genres(apikey, listType: .tv, language: "en"){
  apiReturn, genres in
  if let genres = genres{
    genres.forEach{
      print($0.name)
    }
  }
}

但我认为它已经过时了。

所以现在我在 viewController.swift 中调用函数,如下所示:

    GenresMDB.genres(apiKey, listType: .movie, language: "en", completion: (ClientReturn, [GenresMDB]?) -> ()) {
}

我想要一个带有英语语言的电影类型列表。但是我仍然不明白完成处理程序会做什么。或者我如何保存函数返回的数据(我认为是 JSON 格式)。是否有人了解此功能并向我解释?

4

1 回答 1

0

自上次更新 wiki 以来,没有什么太大的变化。下面是一个如何实现你想要的例子。

GenresMDB.genres(key, listType: .movie, language: "en", completion: {
    error, genresData in
    //Do something with genres returned
    print(genresData[0].name)
})

您还可以查看有关在 swift中使用closures/的文档completion handlers

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html

于 2017-06-07T23:24:04.137 回答