“无法将类型'()'的值转换为UIImage”:Swift

时间:2018-04-24 19:40:49

标签: 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 == 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'

2 个答案:

答案 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

    })