我正在尝试从URL加载UIImage,然后通过闭包传递该UIImage。
这是获取图片的代码:
func getImageFromData(_ imgURL:URL, completion: @escaping imageClosure) {
print("Download Started")
getDataFromUrl(url: imgURL) { data, response, error in
guard let data = data, error == nil else {
return
}
if let thisImage = UIImage(data: data) {
completion(thisImage)
}
}
}
func getDataFromUrl(url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
URLSession.shared.dataTask(with: url) { data, response, error in
completion(data, response, error)
}.resume()
}
这是imageClosure
typealias imageClosure = (_ thisImage:UIImage) -> Void
我正在这样打电话
let thisImage:UIImage = myAPIManager.getImageFromData(thisImageURL, completion: { (thisImage:UIImage) in
})
我在上面的行中得到错误:
Cannot convert value of type '()' to specified type 'UIImage'
答案 0 :(得分:1)
您对getImageFromData的定义返回Void(一种类型,其唯一成员也称为Void,a.k.a为空元组,())。它没有返回图像。
您需要在回调闭包内设置图像,而不是通过指定函数的不存在的返回值。
答案 1 :(得分:0)
此功能getImageFromData
不返回值
编辑本
let thisImage:UIImage = myAPIManager.getImageFromData(thisImageURL, completion: { (thisImage:UIImage) in
})
到此
myAPIManager.getImageFromData(thisImageURL, completion: { (thisImage:UIImage) in
let myImage:UIImage = thisImage
})