簡體   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