我正在使用AWS Mobile Hub来实现我在Swift中编写的iOS应用程序的登录。直到本周,它运行良好,但更新到Xcode 9.1导致出现几个构建错误。我还有2个错误。两者都涉及特定于协议的呼叫; 'AWSSignInDelegate'和'AWSCognitoIdentityPasswordAuthentication'。
extension SignInVC: AWSSignInDelegate
{
func onLogin(signInProvider: AWSSignInProvider, result: Any?, error: Error?)
{
//Code
}
}
extension SignInVC: AWSCognitoIdentityPasswordAuthentication
{
func getDetails(_ authenticationInput: AWSCognitoIdentityPasswordAuthenticationInput, passwordAuthenticationCompletionSource: AWSTaskCompletionSource<AWSCognitoIdentityPasswordAuthenticationDetails>)
{
//Code
}
func didCompleteStepWithError(_ error: Error?)
{
//Code
}
}
错误:
类型'SignInVC'不符合协议'AWSSignInDelegate'
候选人具有非匹配类型'(AWSSignInProvider,Any?,错误?) - &gt; ()'
和
类型'SignInVC'不符合协议'AWSCognitoIdentityPasswordAuthentication'
候选人有不匹配的类型'(错误?) - &gt; ()'
到目前为止我有什么: 错误仅发生在包含swift类型“Error”作为参数的方法中。上面的'getDetails'调用看起来不像其他2个方法那样抛出错误。
这里有一个类似的问题: Cannot conform to STPAddCardViewControllerDelegate since Xcode 8 GM on Swift 3
建议将@escaping添加到完成块以修复类似的错误。我的问题不涉及完成块。所以我假设我错误地将swift错误类型作为参数处理,看到objc中这两个方法的实现使用了NSError。
有关如何解决此问题的任何建议? 非常感谢!
答案 0 :(得分:1)
我发现标准的Swift Error类型被我项目中其他地方命名不当的Error类覆盖了。
答案 1 :(得分:0)
我对AWS不是很熟悉,但是我看了一下你正在使用的协议的文档,而且功能名称并不完全匹配,在这里查看我认为最新的名称。
http://docs.aws.amazon.com/AWSiOSSDK/latest/Protocols/AWSCognitoIdentityPasswordAuthentication.html
http://docs.aws.amazon.com/AWSiOSSDK/latest/Protocols/AWSSignInDelegate.html