«Невозможно преобразовать значение типа '()' в UIImage": Swift - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь загрузить UIImage из URL, а затем передать этот 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()
}

это изображениеЗакрытие

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 голосов
/ 24 апреля 2018

Эта функция getImageFromData не возвращает значение

Редактировать это

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

    }) 

К этому

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

let myImage:UIImage = thisImage

    })
0 голосов
/ 24 апреля 2018

Ваше определение getImageFromData возвращает Void (тип, единственный член которого также называется Void, a.k.a пустой кортеж, ()). Изображение не возвращается.

Вам необходимо установить изображение внутри замыкания обратного вызова, а не присваивая несуществующее возвращаемое значение функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...