我正在对邮政编码信息站点进行api调用,并编写了一个获取数据的函数,然后使用JSONDecoder进行解析...问题是,当我调用该函数时,数据被困在补全中处理程序。不必使用委托,是否有办法将值从完成处理程序中提取出来,以便在类中的其他地方使用?
HashMap
答案 0 :(得分:1)
可以尝试使用公共变量而不是完成处理程序。我在我的一个项目中也使用了这种方法:
//Posts image data in Constants class
func downloadImageFrom(urlString: String){
let url = URL(string: urlString)!
var request = URLRequest(url: url)
request.httpMethod = "GET"
var data: Data?
URLSession.shared.dataTask(with: request) { (d, r, e) in
guard let dat = d else {
print("No Data")
return
}
guard r == r else {
print("No Response")
return
}
if let err = e {
print("ERROR: \(err)")
}
data = dat
Constants.imageData = data
NotificationCenter.default.post(name: Notification.Name(rawValue: "NewImageData"), object: self)
}.resume()