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 无法保存数组

AFHTTPRequestOperation 超时

AFNetworking 2 使用 AFHTTPRequestOperation 进行身份验证

在 AFHTTPRequestOperation 失败时显示 UIAlertView