Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Firebase segue身份验证_Ios_Swift_Firebase_Firebase Authentication - Fatal编程技术网

Ios Firebase segue身份验证

Ios Firebase segue身份验证,ios,swift,firebase,firebase-authentication,Ios,Swift,Firebase,Firebase Authentication,目前我正在使用Firebase身份验证,并处理了许多错误,如错误的用户名、密码、空字段等,一切正常。但是,当我尝试向下一页添加一个segue并使用数据库中不存在的随机电子邮件时,Firebase auth没有给我任何错误,只是将用户传递到下一页。当我删除segue并放入random user时,它会给我一个找不到这样的用户的错误,这就是我试图用segue实现的。请告知,可能有什么问题 AuthService文件 func login(email: String, password: String

目前我正在使用Firebase身份验证,并处理了许多错误,如错误的用户名、密码、空字段等,一切正常。但是,当我尝试向下一页添加一个segue并使用数据库中不存在的随机电子邮件时,Firebase auth没有给我任何错误,只是将用户传递到下一页。当我删除segue并放入random user时,它会给我一个找不到这样的用户的错误,这就是我试图用segue实现的。请告知,可能有什么问题

AuthService文件

func login(email: String, password: String, onComplete: Completion?) {
    FIRAuth.auth()?.signIn(withEmail: email, password: password, completion: { (user, error) in
        if error != nil {
            self.handleFirebaseError(error: error! as NSError, onComplete: onComplete)
        } else {
            onComplete?(nil, user)
        }

    })
}

func handleFirebaseError(error: NSError, onComplete: Completion?) {
    print(error.debugDescription)
    if let errorCode = FIRAuthErrorCode(rawValue: error.code) {
        switch (errorCode) {
        case .errorCodeInvalidEmail:
            onComplete?("Invalid email address", nil)
            break
        case .errorCodeWrongPassword:
            onComplete?("Invalid password", nil)
            break
        case .errorCodeUserNotFound:
            onComplete?("Can't find user", nil)
            break
        default:
            onComplete?("There was a problem authentication. Try again", nil)
        }
    }
}
视图控制器

@IBAction func loginBtnTapped(_ sender: Any) {
    if let email = emailField.text, let pass = passwordField.text , (email.characters.count > 0 && pass.characters.count > 0)  {
        AuthService.instance.login(email: email, password: pass, onComplete: { (errMsg, data) in
            guard errMsg == nil else {
                self.alert(title: "Error Authentication", errMsg: errMsg!)
                return
            }
        })
    } else {
        self.alert(title: "Username and password required", errMsg: "You must enter both a username and a password")
    }
}

如果在情节提要中创建序列,它将立即激发并打开下一个视图控制器。您拥有的登录代码是异步的,脚本不会等待它


如果您配置了segue(尝试在那里添加断点),则很可能甚至不会调用loginBtnTapped方法。

hybridcattt是正确的。我要补充一个更具体的答案。使用segues时,确保下一个屏幕没有直接通过按钮连接,否则无论您等待的结果如何,只要您点击它,它就会立即启动

将视图控制器连接到下一个视图控制器,如下所示:

然后在该序列中添加一个标识符


最后,当您得到您等待的内容(例如成功登录)时,请执行性能检查

非常感谢!我听从了你的指示,问题解决了!非常欢迎。您可能希望选择此作为问题的答案。:)