无法调用非函数类型“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”的值?的主要内容,如果未能解决你的问题,请参考以下文章
Alamofire 4:无法调用非函数类型“HTTPURLResponse?”的值
无法调用非函数类型“HTTPURLResponse?”的值- 阿拉莫菲尔 4.0
无法调用非函数类型“HTTPURLResponse?”的值阿拉莫菲尔 4,斯威夫特 3
Swift 3.0 迁移后的 Alamofire 错误:“无法将 '(URL, HTTPURLResponse)-> (URL)' 类型的值转换为预期的参数类型 'Parameters'”?