【问题标题】:Cannot call value of non-function type 'HTTPURLResponse?无法调用非函数类型“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
}

【问题讨论】:

    标签: alamofire alamofireimage


    【解决方案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: "")
    

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

    【讨论】:

    • 谢谢,我会调查的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2017-09-02
    • 2017-08-16
    相关资源
    最近更新 更多