2016-09-18 36 views
1

它给了我错误:无法调用非函数类型'HTTPURLResponse'的值 它应该是由@escaping引起的,但我无法使它在下面的句子中工作。请帮忙,Swift 3.0,AlamofireImage。 还有其他类似的答案,但不能让他们与我的代码下面的工作。无法调用非函数类型'HTTPURLResponse的值?

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

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

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

+0

为什么downvote? – Darkwonder

+0

谢谢,我会研究它! – Giovanni

相关问题