无法调用非函数类型“HTTPURLResponse”的值?

Posted

技术标签:

【中文标题】无法调用非函数类型“HTTPURLResponse”的值?【英文标题】:Cannot call value of non-function type 'HTTPURLResponse? 【发布时间】:2016-09-18 02:52:29 【问题描述】:

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

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

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

【讨论】:

谢谢,我会调查的!

以上是关于无法调用非函数类型“HTTPURLResponse”的值?的主要内容,如果未能解决你的问题,请参考以下文章

无法调用非函数类型“HTTPURLResponse?”的值

Alamofire 4:无法调用非函数类型“HTTPURLResponse?”的值

无法调用非函数类型“HTTPURLResponse?”的值- 阿拉莫菲尔 4.0

无法调用非函数类型“HTTPURLResponse?”的值阿拉莫菲尔 4,斯威夫特 3

Swift 3.0 迁移后的 Alamofire 错误:“无法将 '(URL, HTTPURLResponse)-> (URL)' 类型的值转换为预期的参数类型 'Parameters'”?

无法调用非函数类型“URL”的值