Swift错误无法转换类型'(AFHTTPRequestOperation?,AnyObject?)->()的值

Posted

技术标签:

【中文标题】Swift错误无法转换类型\'(AFHTTPRequestOperation?,AnyObject?)->()的值【英文标题】:Swift error Cannot convert value of type '(AFHTTPRequestOperation?, AnyObject?) -> ()Swift错误无法转换类型'(AFHTTPRequestOperation?,AnyObject?)->()的值 【发布时间】:2016-09-14 09:47:58 【问题描述】:

在我更新 xcode 版本 8.0 (8A218a) swift 3 后,出现此错误

无法将类型 '(AFHTTPRequestOperation?, AnyObject?) -> ()' 的值转换为预期的参数类型 '((AFHTTPRequestOperation?, Any?) -> Void)!'

这是上面显示错误的以下代码。

jsonmanager.post( "http://myapi.com",
                      parameters: nil,
                      success:  (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
                        if(responseObject.object(forKey: "meta")?.object(forKey: "status")?.intValue == 200)....

我做错了吗?

在以前的版本 7.3.1 swift 2 中运行良好。

【问题讨论】:

【参考方案1】:

回调方法签名已更改。在 Swift 2 中是

(AFHTTPRequestOperation?, AnyObject?) -> Void

在 Swift 3 中是

(AFHTTPRequestOperation?, Any?) -> Void

你应该改变下面的行

success:  (operation: AFHTTPRequestOperation!,responseObject: AnyObject!)

success:  (operation: AFHTTPRequestOperation?, responseObject: Any?)

【讨论】:

更改后我收到此消息:无法调用非函数类型的值'Any?!' 这里面如果:“任何?”类型的值没有成员“对象” 您可以尝试将responseObject 转换为AnyObjectAnyObjectAny 完全不同,因此您将不得不重写应用程序的该部分以正确处理 Any 而不是 AnyObject

以上是关于Swift错误无法转换类型'(AFHTTPRequestOperation?,AnyObject?)->()的值的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 RKObjectRequestOperation 返回错误无法转换类型为 RKObjectRequestOperation

firebase swift 3 转换:无法将类型“(_)->()”的值转换为预期的参数类型“((错误)-> Void)?

无法转换任何类型?要键入 AnyObject?从 swift 3 转换为 swift 4 时

“无法转换类型的值” - Firebase Swift 中的错误

Xcode 8.1 Swift 3 错误:无法将“String”类型的值转换为预期的参数类型“UnsafeMutableRawPointer”

Swift json 解析错误:无法将 NSCFConstantString 类型的值转换为 NSArray