【发布时间】:2021-12-15 10:37:14
【问题描述】:
我在尝试从 API 检索和解码 JSON 数据时遇到问题。我能够从 API 获取数据并成功解码,但我无法从函数范围之外访问它。我正在使用以下函数来获取和解码数据。 API 返回一个 JSON 对象数组。
func getJSON(completed: @escaping () -> ()) {
var jsonData = [API_data] () // A struct for retrieved data
let url = "URL Here" // I have the original URL here, which I can't share
let task = URLSession.shared.dataTask(with: URL(string: url)!, completionHandler: { [self]data,response,error in
guard let data = data, error == nil else{
print("error")
return
}
do{
jsonData = try JSONDecoder().decode([API_data].self,from:data)
} catch{
print(error)
}
print(jsonData[0].id) // This prints my data
})
print(jsonData[0].id) // This won't print my data
task.resume()
}
struct API_data: Codable {
let id : String
}
因此,我无法在应用程序的任何地方使用这些数据。任何帮助将不胜感激。我也试过将jsonData设为全局变量,在函数中更新它并返回它然后使用它,仍然不起作用。
感谢您的帮助。
【问题讨论】: