1

它给了我错误:无法调用非函数类型“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
}
4

1 回答 1

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: "")

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

于 2016-09-20T08:36:18.927 回答