0

嗨,我在 iOS 中使用 AWS Mobile hub,我遵循了 aut with cognito 的介绍。它说我必须从示例中导入用户池文件。我这样做了,但这会给我一个错误:

extension SignInViewController: AWSCognitoIdentityPasswordAuthentication {

    func getDetails(_ authenticationInput: AWSCognitoIdentityPasswordAuthenticationInput, passwordAuthenticationCompletionSource: AWSTaskCompletionSource<AnyObject>) {
        self.passwordAuthenticationCompletion = passwordAuthenticationCompletionSource
    }

    func didCompleteStepWithError(_ error: Error?) {
        if let error = error {
            DispatchQueue.main.async(execute: {
                UIAlertView(title: "ERROR",
                    message: error.localizedDescription,
                    delegate: nil,
                    cancelButtonTitle: "Ok").show()
            })
        }
    }
}

错误:

类型“SignInViewController”不符合协议“AWSCognitoIdentityPasswordAuthentication”

还:

协议需要函数 'getDetails(_:passwordAuthenticationCompletionSource:)' 类型为 '(AWSCognitoIdentityPasswordAuthenticationInput, AWSTaskCompletionSource) -> Void'; 你想添加一个存根吗?(AWSCognitoIdentityProvider.AWSCognitoIdentityPasswordAuthentication)

和:

候选人的类型不匹配'(AWSCognitoIdentityPasswordAuthenticationInput, AWSTaskCompletionSource) -> ()'

4

1 回答 1

1

根据文档,任何符合的类都AWSCognitoIdentityPasswordAuthentication应该实现:

– getPasswordAuthenticationDetails:passwordAuthenticationCompletionSource
– didCompletePasswordAuthenticationStepWithError

您没有实现它们,因此会出现错误。

编辑 是的,你是对的,Swift 3 中的函数签名发生了变化(见这里)。

他们应该是这样的:

func getDetails(_ authenticationInput: AWSCognitoIdentityPasswordAuthenticationInput, passwordAuthenticationCompletionSource: AWSTaskCompletionSource<AWSCognitoIdentityPasswordAuthenticationDetails>)
func didCompleteStepWithError(_ error: Error?)

看起来您的第一个 func 版本略有不同。

于 2017-01-04T13:25:11.070 回答