繁体   English   中英

返回字符串数组并填充UILabel-Swift 3

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM