gpt4 book ai didi

Swift 3 转换类型别名闭包转换问题

转载 作者:行者123 更新时间:2023-11-28 15:55:07 25 4
gpt4 key购买 nike

我得到的实际 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 中看到的最后一个错误。

最佳答案

我在干净的 Playground 上尝试了以下代码:

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 typelias 而不是其他东西?

附言。无论哪种情况,请向我的 Playground 添加越来越多的代码,直到出现错误并与我们分享。

关于Swift 3 转换类型别名闭包转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41895973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com