[英]Returning an array of string and populate UILabel - Swift 3
有两个请求。 第一个请求返回一个int数组。 int数组中的对象是唯一的。 含义是,它具有与int相关联的字符串值。 要获取密钥的值,我必须再次请求。 第二个URL请求具有第一个URL中的int数组的值。 (第二个URL请求)我正在尝试使用swift 3发出URL请求。以下是代码:
func fetchMovieGenres(_ forGenreIds: [Int], callback: @escaping (String) -> Void) {
let params = [ API: APIKey ]
var request = URLRequest(url: urlBuilder.tmdbURLBuilder(params as [String: Any], withPathExtension: MovieGenreList))
request.addValue("application/json", forHTTPHeaderField: "Accept")
let task = urlBuilder.session.dataTask(with: request) {(data, response, error) in
do {
if let data = data, let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: Any], let results = json["genre"] as? [[String:Any]] {
callback(Genre.genreFromResults(results)) // Cannot convert value of type '[Genre]' to expected argument type 'String'
}
} catch {
print("Error parsing JSON: \(error)")
}
}
task.resume()
}
在viewDidLoad()
我正在这样做: genreLabel.text = "\\(fetchMovieGenres(result?.genreIds)!)"
发生的是,我正在尝试从远程URL返回一个字符串数组,并将其填充到UILabel
。 但是由于某种原因,我无法实现这一目标。
首先,您需要为最终的字符串提供一个回调。 假设Genre.genreFromResults(results)
是标签所需的字符串...
将您的方法更改为:
private func fetchMovieGenres(_ forGenreIds: [Int], callback: (String) -> Void) {
更改:
self.genre = Genre.genreFromResults(results) print(json)
至:
callback(Genre.genreFromResults(results))
并将您的方法调用更改为:
fetchMovieGenres(ids) { string in genreLabel.text = string }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.