我正在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格式)。是否有人了解这个功能并向我解释一下?
答案 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
的文档