我得到的实际Xcode错误是:
Cannot convert value of type '(AnyObject?, _) -> ()' to expected argument type 'FOSSAPIResponseHandler?'
我定义为FOSSAPIResponseHandler
的类型是:
public typealias FOSSAPIResponseHandler = ((_ responseObject: Any?, _ error: NSError?) -> Void)
我使用的方法是:
public func getAccount(responseHandler: FOSSAPIResponseHandler?) {
...
}
使用通话时出现错误:
self.networkingClient.getAccount { (responseObject, error) in
}
xcode中的错误显示在.getAccount {
到in
行。
任何帮助都会受到赞赏,因为这是我在转换到Swift 3的动荡时期中在Xcode中看到的最后一个错误。
答案 0 :(得分:1)
我在干净的游乐场尝试了以下代码:
typealias FOSSAPIResponseHandler = ((_ responseObject: Any?, _ error: NSError?) -> Void)
class NetworkingClient: NSObject {
func getAccount(responseHandler: FOSSAPIResponseHandler?) {
guard responseHandler != nil else { return }
responseHandler!("Cool", nil)
}
}
let networkingClient = NetworkingClient()
networkingClient.getAccount { (responseObject, error) in
print (responseObject!)
}
完美运行(在控制台中打印Cool
)。因此,它应该是您代码中的其他内容,我们在您共享的几行代码中看不到的内容。
我的第一个猜测是你将响应处理程序存储在NetworkingClient
类的某个地方,与此类似:
var responseHandler: FOSSAPIResponseHandler?
请问您是否验证此var使用相同的FOSSAPIResponseHandler
类型而不是其他类型?
PS。在任何一种情况下,请在我的操场上添加越来越多的代码,直到您收到错误并与我们分享。