"Cannot convert value of type '()' to UIImage": Swift

"Cannot convert value of type '()' to UIImage": Swift

我正在尝试从 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'

您对 getImageFromData 的定义 returns Void(唯一成员也称为 Void 的类型,a.k.a 空元组,())。它没有 return 图片。

您需要在回调闭包中设置图像,而不是通过分配函数的不存在的 return 值。

这个函数getImageFromData不是return值

编辑这个

let thisImage:UIImage = myAPIManager.getImageFromData(thisImageURL, completion: { (thisImage:UIImage) in

    }) 

对此

myAPIManager.getImageFromData(thisImageURL, completion: { (thisImage:UIImage) in

let myImage:UIImage = thisImage

    })