无法调用非功能类型的值' HTTPURLResponse?

时间:2016-09-18 02:52:30

标签: alamofire alamofireimage

它给了我错误:无法调用非功能类型的值' 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
}

1 个答案:

答案 0 :(得分:0)

错误消息: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: "")

检查其他方法调用和属性。我相信你会找到你想要的数据。