音乐会类型'UITextField'不能预期参数类型'String'

时间:2017-12-12 14:14:05

标签: swift firebase variables uitextfield firebase-authentication

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

我尝试了从文本字段强制用户名(电子邮件地址)到字符串的不同方法。我只是不能得到该死的东西转换或接受输入为一个字符串。在此期间,我一直在努力尝试获取此功能,但是我写了其余的登录功能,但这是阻止它工作或让我看到其他错误。

中出现

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

我的文本字段称为用户名。我已经尝试过转换(String(用户名)),作为String,等等,我尝试创建var并让它成为String但这只会产生更多错误我认为这个东西已经腐败了!

请帮忙。

4 个答案:

答案 0 :(得分:0)

如果您有一个名为var list = Protected(["item1"]) // Get value: let items = list.value // Set value: list.value = ["item1", "item2"] // Read block: list.read { items in print(items) } // Write block: list.write { items in items.append(...) } 的{​​{1}},您可以通过UITextField获取文本字段中的文字,该文字会返回username

请参阅https://developer.apple.com/documentation/uikit/uitextfield/1619635-text

答案 1 :(得分:0)

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

答案 2 :(得分:0)

因为UITextField不是String,但它的值是一个名为text的字符串。要做到这一点只需更改代码

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

但是,正如您所提到的text是一个可选字符串,这就是您收到错误的原因,该函数期待一个显式的字符串

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

在登录中传递变量之前,您可以使用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,...

答案 3 :(得分:0)

嘿所以我一直在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)
        }
    }
}

这是一个很好的简单方法。

希望有所帮助。