所以我真的很挣扎,我不知道为什么要tbh。
我尝试了不同的方式将我的用户名(电子邮件地址)从文本字段引用。我只是无法得到该死的东西要转换或接受输入作为字符串。在我写了其余的登录功能的同时,几乎整整一天的时间都在荒谬地尝试解决这个问题,但这阻止了它工作或让我看到其他错误。
Auth.auth().signIn(withEmail: username, password: password, completion: { user,
我的文本字段称为用户名。我尝试过转换(字符串(用户名),作为字符串,因此,我尝试创建VAR并让其使其字符串,但这只会产生更多的错误,我认为这是损坏的!
请帮助。
如果您有一个名为 username
的UITextField
,则从: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)
}
}
}
这是一个很好的方法。
希望会有所帮助。