尝试返回真假Bool值时出错...有人可以帮忙吗?我试图检查Firebase数据库中是否存在用户。
func checkIfUserExists(email: String) -> Bool{
FIRDatabase.database().reference().child("users").observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject]{
switch email {
case dictionary["email"] as! String!:
return true
break
default:
return false
break
}
}
}, withCancel: nil)
}
答案 0 :(得分:2)
你的回归是封闭,而不是你的功能。我想到的是你可以像这样在你的函数中返回一个闭包
func checkIfUserExists(email: String, completion:(success:Bool) -> ())
然后,一旦您的FIRDatabase结束,而不是返回true或false,
completion(success:true) // or false
并像这样使用它。
checkIfUserExists("email@mail.com") { (success) in
if success
{
// Email found
}
else{
}
}
此link可能会有所帮助
答案 1 :(得分:0)
以这种方式改变
func checkIfUserExists(email: String, results:(exists:Bool)->Void){
FIRDatabase.database().reference().child("users").observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject]{
switch email {
case dictionary["email"] as! String!:
results(true)
break
default:
results(false)
break
}
}
}, withCancel: nil)
}
可以像这样调用该函数
checkIfUserExists(email: "some email", results:{ exists
if exists {
//do something
}
else{
// user do not exist... do something
}
})
<@> @ohr答案应该是受约束的,这只是一个澄清