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