2016-09-18 35 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

相關問題