【问题标题】:I am unable to create a new account in my app. Create account button does nothing我无法在我的应用程序中创建新帐户。创建帐户按钮不执行任何操作
【发布时间】:2019-05-16 15:52:16
【问题描述】:

我正在尝试完成我的应用程序的注册程序,但是当我点击创建帐户时,它什么也没做。它只是保持在同一页面上。创建帐户按钮应触发以下方法:

@IBAction func createAccountPress(_ sender: Any){

        guard usernameField.text != "", emailField_SU.text != "", passwordField_SU.text != "", confirmPasswordField_SU.text != "" else {return}

        if passwordField_SU == confirmPasswordField_SU{
            if let email = emailField_SU.text, let password = passwordField_SU.text{
                Auth.auth().createUser(withEmail: email, password: password)
                { (user,error) in
                    if let error = error{
                        print(error.localizedDescription)
                    }
                    if let user = user {
                        let changeRequest = Auth.auth().currentUser!.createProfileChangeRequest()
                        changeRequest.displayName = self.usernameField.text
                        changeRequest.commitChanges(completion:nil)
                        let imageRef = self.userStorage.child("\(user.user.uid).jpg")
                        let data = self.userImgView.image!.jpegData(compressionQuality:0.5)

                        let uploadTask = imageRef.putData(data!, metadata: nil, completion: {(metadata,error) in
                            if error != nil{
                                print(error?.localizedDescription)
                            }
                            imageRef.downloadURL(completion: {(url, error) in
                                if error != nil {
                                    print(error!.localizedDescription)
                                }
                                if let url = url {
                                    let userInfo: [String:Any] = ["uid": user.user.uid,
                                                                  "username": self.usernameField.text!,
                                                                  "urlToImage":url.absoluteString]

                                    self.ref.child("users").child(user.user.uid).setValue(userInfo)
                                    let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier:"signinVC")
                                    self.present(vc, animated:true, completion:nil)
                                }
                            })
                    })
                    uploadTask.resume()
                        //self.storeUserData(userId: (user.user.uid))
                        //KeychainWrapper.standard.set((user.user.uid), forKey:"uid")
                    self.performSegue(withIdentifier:"backToSignin", sender: nil)
                }
            }
        } else {
            print("Password does not match")
        }
    }
}

我根本没有收到任何错误,应用程序也根本没有退出。它只是没有做任何事情,至少应用程序应该回到登录视图。你发现我的代码有什么问题吗?

【问题讨论】:

  • 你有没有使用调试器并跟踪过这段代码?它实际上是做什么的?哪里出了问题?
  • 我不确定如何在 Xcode 中调试,但我想通了。当密码实际上相同时,这是说密码不一样。它不会出现在 else 语句中,但这很奇怪。
  • if passwordField_SU == confirmPasswordField_SU 比较的是实际的文本字段,而不是其中的文本
  • 按照@dan 的评论尝试用if passwordField_SU.text == confirmPasswordField_SU.text 替换if passwordField_SU == confirmPasswordField_SU。我还会添加一些断点以查看发生了什么:快速/简单的方法是单击行号以添加断点,然后右键单击行号以禁用/删除它。希望这会有所帮助!

标签: swift firebase firebase-authentication


【解决方案1】:

那里有一些简化的代码,但我认为这可能是问题的一部分

if passwordField_SU == confirmPasswordField_SU

因为该代码正在验证密码 field 是否与确认密码 field 相同,因为它们是两个不同的字段。

您可能正在尝试确认用户两次输入了相同的密码并且它们不是空的

if passwordField_SU.text == confirmPasswordField_SU.text {

【讨论】:

    猜你喜欢
    • 2021-10-05
    • 2020-10-15
    • 1970-01-01
    • 2018-02-19
    • 2015-12-06
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 2010-12-25
    相关资源
    最近更新 更多