TMDB包装器API中的Swift函数不清楚

时间:2017-06-07 11:26:40

标签: swift function frameworks wrapper themoviedb-api

我正在Swift中创建一个使用TMDB中的API的应用程序。我为此找到了wrapper。用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格式)。是否有人了解这个功能并向我解释一下?

1 个答案:

答案 0 :(得分:0)

自从维基上次更新以来,没有太大的变化。以下是如何实现您想要的效果的示例。

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