用完成处理程序调用自己的函数

时间:2019-05-24 12:56:29

标签: swift recursion

我有一种创建帐户的方法:

func createAccount (completion: @escaping (_ succes: Bool, _ message : String)->()) {
    Auth.auth().createUser(withEmail: createMail(), password: createPassword()) { (result, error) in
        if let _eror = error {
            //something bad happning
            print(_eror.localizedDescription )

            if let errorCode = AuthErrorCode(rawValue: _eror._code) {
                if(errorCode.rawValue == 17007) {
                    print("acount exist")
                    createAccount(completion: (Bool, String) -> ()
                } else {
                    //call itself and try it again
                }
            }
        } else {
            //user registered successfully
            print("user registered")
            return completion(true, "");
        }
    }
}

当软件使用已经存在的电子邮件创建帐户时出现错误,这很好(请参阅else语句-//call itself and try it again)。

需要发生的是,该功能需要再次调用自身,以使用其他电子邮件进行尝试。

我试图将createAccount(completion: (Bool, String) -> ()放在else的情况下,但这没用。

在其他情况下如何再次调用createAccount()函数?

1 个答案:

答案 0 :(得分:3)

您需要再次传递相同的参数

createAccount(completion:completion)