它给了我错误:无法调用非功能类型的值' 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
}
答案 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: "")
检查其他方法调用和属性。我相信你会找到你想要的数据。