gpt4 book ai didi

ios - Firebase - 无法执行对后端的调用

转载 作者:行者123 更新时间:2023-11-29 00:48:51 25 4
gpt4 key购买 nike

我正在开发一种处理用户注册的功能,并在此过程中检查用户输入的所选用户名是否已被使用,以通知用户选择其他用户名。我有以下代码来完成这个场景:

@IBAction func proceedPressed(sender: AnyObject) {

/**********************Perform Validation************************/
if(self.emailTxtField.text != "" && self.passwordTxtField.text != "")
{
print("Email and Password not empty")
self.usernameValidation({(result) -> Void in
if(result == false)
{
print("Result False")
self.usernameErrorLabel.text = "Username Taken"
}else{
print("Result True")
//Username is available...Proceed
self.usernameErrorLabel.text = ""

FIRAuth.auth()?.createUserWithEmail(self.emailTxtField.text!, password: self.passwordTxtField.text!) { (user, error) in
if(error == nil)
{
print("Creating User with Email")
/*Create the user object as submitted*/
self.dbReference.child("users").child(user!.uid).setValue(["username": self.emailTxtField.text!,"name":self.nameTxtField.text!, "email":self.emailTxtField.text!, "mobile":self.mobileTxtField.text!, "homeAddress":"N", "workAddress":"N", "otherAddress":"N", "profilePictureRef":"N","telephone":"0","friendsCount":0, "retailersCount":0])


}else{
print("Error occured: \(error?.description)")
}
}//end of createUserWithEmail
}
})

}else{
print("Error: Email or Password field is empty")
}

}

并检查用户名:

func usernameValidation(completion: (result: Bool) -> Void)
{
print("Username is: \(self.usernameTxtField.text!)")

dbReference.child("usernamesTaken").queryOrderedByValue().queryEqualToValue(self.usernameTxtField.text!).observeEventType(.Value, withBlock: { (snapshot: FIRDataSnapshot!) -> Void in
print(snapshot.childrenCount)
if(snapshot.childrenCount == 0)
{
print("result is true in username validation")
//Username Available
completion(result:true)
}else{
print("result is false in username validation")
//Username Taken
completion(result:false)
}
})
}

上面的问题是完整的代码似乎没有执行。按下按钮时,我在控制台中收到以下消息:- 电子邮件和密码不为空- 用户名是:[在 usernameTxtField.text 中输入的值然后就没什么了。尽管我编写了许多打印语句来尝试查看它在哪里停止,但这是代码在打印语句方面走得最远的地方。

这里有什么我遗漏的问题吗?

提前致谢。

最佳答案

我做了一些更多的测试,然后通过 xcode 控制台发现了这个问题。我从 firebase 网站复制了以下内容来测试获取数据:

ref.child("users").child(userID!).observeSingleEventOfType(.Value, withBlock: { (snapshot) in
// Get user value
let username = snapshot.value!["username"] as! String
let user = User.init(username: username)

// ...
}) { (error) in
print(error.localizedDescription)
}

上面显示了一个“权限被拒绝”的错误。之后,我在控制台的数据库部分编辑了规则,并允许 .read 和 .write 并完成了。我想我会发布详细信息以防其他人被卡住。

关于ios - Firebase - 无法执行对后端的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38365621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com