AFHTTPRequestOperation setCacheResponseBlock 无法转换类型的值
Posted
技术标签:
【中文标题】AFHTTPRequestOperation setCacheResponseBlock 无法转换类型的值【英文标题】:AFHTTPRequestOperation setCacheResponseBlock Cannot convert value of type 【发布时间】:2015-10-22 14:28:26 【问题描述】:我在 swift 中使用AFHTTPRequestOperation
,如下所示:
let operation : AFHTTPRequestOperation? = manager.GET(requestURL, parameters: nil,
success: (operation:AFHTTPRequestOperation!, responseObject:AnyObject!) -> Void in
...
...
...
success(downloadedItems: responseObject)
, failure: (operation: AFHTTPRequestOperation!, error: NSError!) in
failure(responseFromCache: responseFromCache, error: error);
)
我将 setCacheResponseBlock 用于特定应用目的(ETag 等)
operation!.setCacheResponseBlock (connection: NSURLConnection, cachedResponse: NSCachedURLResponse) -> NSCachedURLResponse in 打印(“返回:200”) responseFromCache = false 返回缓存响应
在将 XCode 更新到新版本 XCode7.1 之前一切正常。
这是我的问题,更新后构建应用程序时出现此错误:
Cannot convert value of type '(NSURLConnection, NSCachedURLResponse) -> NSCachedURLResponse' to expected argument type '((NSURLConnection!, NSCachedURLResponse!) -> NSCachedURLResponse!)!'
如何解决这个问题?
【问题讨论】:
【参考方案1】:检查错误消息后,我了解到我的参数有问题。我在 XCode 中检查了方法的声明,我理解了刚刚更新的方法声明:
func setCacheResponseBlock(block: ((NSURLConnection!, NSCachedURLResponse!) -> NSCachedURLResponse!)!)
我这样更新了我的方法:
operation!.setCacheResponseBlock (connection: NSURLConnection!, cachedResponse: NSCachedURLResponse!) -> NSCachedURLResponse! in
print("Returns:200")
responseFromCache = false
return cachedResponse
另一个在 Xcode 中构建成功消息的快乐结局。希望这会对某人有所帮助。
【讨论】:
以上是关于AFHTTPRequestOperation setCacheResponseBlock 无法转换类型的值的主要内容,如果未能解决你的问题,请参考以下文章
Swift错误无法转换类型'(AFHTTPRequestOperation?,AnyObject?)->()的值
AFHTTPRequestOperation setCacheResponseBlock 无法转换类型的值
AFNetworking + AFHTTPRequestOperation 无法保存数组