Не удается вызвать значение нефункционального типа «HTTPURLResponse?

Это дает мне ошибку: невозможно вызвать значение нефункционального типа «HTTPURLResponse?» Это должно быть вызвано @escaping, но я не могу заставить его работать в предложении ниже. Помогите пожалуйста, Swift 3.0, AlamofireImage. Есть и другие похожие ответы, но они не могут заставить их работать с моим кодом ниже.

func getNetworkImage(_ urlString: String, completion: @escaping ((UIImage) -> Void)) -> (ImageRequest) {
    let queue = decoder.queue.underlyingQueue
    let request = Alamofire.request(urlString)
    let imageRequest = ImageRequest(request: request)

    imageRequest.request.response(
        queue: queue,
        responseSerializer: Request.imageResponseSerializer(),
        completionHandler: { response in
            guard let image = response.result.value else {
                return
            }
            let decodeOperation = self.decodeImage(image) { image in
                completion(image)
                self.cacheImage(image, urlString: urlString)
            }
            imageRequest.decodeOperation = decodeOperation
        }
    )

    return imageRequest
}

person edare    schedule 18.09.2016    source источник


Ответы (1)


Сообщение об ошибке: Cannot call value of non-function type 'HTTPURLResponse?' говорит вам, что переменная экземпляра value недоступна. Плохо то, что он говорит вам об этом в неправильной строке кода. Возможно, поэтому его было так трудно найти.

Структура объекта ответа изменилась. Вы кодируете:

guard let image = response.result.value else {
            return
}

Больше не будет работать, потому что объект response имеет тип DefaultDataResponse, а не HTTPResponse....

Чтобы получить доступ к данным/изображению, вам нужно использовать response.response. в зависимости от того, к чему вы хотите получить доступ:

response.response?.value(forKey: "")

Проверьте вызовы и свойства других методов. Я верю, что вы найдете данные, которые вы ищете.

person Darkwonder    schedule 20.09.2016
comment
Спасибо, буду разбираться! - person edare; 25.09.2016