【发布时间】: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