Swift &引用;无法转换类型为';()';要创建“UIImage”,请执行以下操作:敏捷的
我试图从URL加载UIImage,然后通过闭包将该UIImage传递回 这是获取图像的代码:Swift &引用;无法转换类型为';()';要创建“UIImage”,请执行以下操作:敏捷的,swift,uiimage,Swift,Uiimage,我试图从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 ==
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()
}
这是图像结束
typealias imageClosure = (_ thisImage:UIImage) -> Void
我是这样打电话的
let thisImage:UIImage = myAPIManager.getImageFromData(thisImageURL, completion: { (thisImage:UIImage) in
})
我在上面一行得到了错误:
Cannot convert value of type '()' to specified type 'UIImage'
getImageFromData的定义返回Void(该类型的唯一成员也称为Void,也称为空元组,())。它不会返回图像
您需要在回调闭包内设置映像,而不是通过分配函数不存在的返回值。此函数
getImageFromData
非返回值
编辑此
let thisImage:UIImage = myAPIManager.getImageFromData(thisImageURL, completion: { (thisImage:UIImage) in
})
对此
myAPIManager.getImageFromData(thisImageURL, completion: { (thisImage:UIImage) in
let myImage:UIImage = thisImage
})
您对
getImageFromData
的定义返回Void
(该类型的唯一成员也称为Void
,也称为空元组,()
)。它不返回图像。getDataFromUrl
的意义是什么?它只是以一种不可扩展的方式包装URLSession,这并不能给您带来多少好处。而闭包{data,response,error in completion(data,response,error)}
可以写成completion
URLSession.shared.dataTask(with:url,completion.resume()
事实上这是我的问题:让thisImage:UIImage=…不知道为什么我把它放在那里,结束了漫长的一天。但是谢谢你关于代码的其他建议@Alexander-没有看到你的第一条评论-回答一下,我会接受的。谢谢,有时候额外的一双眼睛就是所需要的。