Concert type'uitextfield'无法预期参数类型“字符串”



所以我真的很挣扎,我不知道为什么要tbh。

我尝试了不同的方式将我的用户名(电子邮件地址)从文本字段引用。我只是无法得到该死的东西要转换或接受输入作为字符串。在我写了其余的登录功能的同时,几乎整整一天的时间都在荒谬地尝试解决这个问题,但这阻止了它工作或让我看到其他错误。

Auth.auth().signIn(withEmail: username, password: password, completion: { user,

中的错误

我的文本字段称为用户名。我尝试过转换(字符串(用户名),作为字符串,因此,我尝试创建VAR并让其使其字符串,但这只会产生更多的错误,我认为这是损坏的!

请帮助。

如果您有一个名为 usernameUITextField,则从:username.text返回String?。在

func performLogin() {
   //Logging In
    Auth.auth().signIn(withEmail: username, password: password, completion: { user, error in
         if (error != nil){
            errorLabel = error1 //"There has been an Error " + "No User Found"
            //Could Not Login, Attempt to Create user
            //Creating Account
            Auth.auth().createUserWithEmail(self.username, password: self.password!, completion: { user, error in

,因为 UITextField不是 String,但它确实具有一个称为 text的字符串。为了获得此功能,只需更改您的代码

Auth.auth().signIn(withEmail: username.text, password: password.text, completion: { user,...

但是,正如您已经提到的text是一个可选的字符串,这就是为什么您收到错误的原因,该功能期望明确字符串

UITextField的文本值是可选的,这意味着您可以保证其值不会为零。您应该了解有关Swift和可选与明确的基础知识的更多信息,但这是一个简单的解决方案。

在登录中传递变量之前,您可以使用guard语句

将它们解开。
guard let usernameString = username.text else {
   // Handle no username, show an alert etc
   return
}
guard let passwordString = password.text else {
   // Handle no password, show an alert etc
   return
}
Auth.auth().signIn(withEmail: usernameString, password: passwordString, completion: { user,...

嘿,所以我一直在firebase中构建我的应用程序,在尝试通过电子邮件创建用户时,我遇到了同样的问题。我只是将其构建为一个函数,它就像梦一样的工作...

 func signIn() {
    Auth.auth().signIn(withEmail: emailTextField.text!, password: passwordTextField.text!) { (user, error) in
        print(user?.uid)
        if error != nil {
            self.displayAlert(title: "Error", message: (error!.localizedDescription))
        } else {
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let loggedInView = storyboard.instantiateViewController(withIdentifier: "Today")
            self.present(loggedInView, animated: true,  completion: nil)
        }
    }
}

这是一个很好的方法。

希望会有所帮助。

最新更新