【发布时间】:2017-06-25 10:41:51
【问题描述】:
我有以下 Firebase 查询,我在其中检查用户名是否已存在于数据库中。我想为名为 usernameAlreadyExists 的变量分配一个布尔值 (true)。但是,我需要在闭包之外使用它的新值访问这个变量。我读到我需要实现一个completionHandler 或一个回调才能做到这一点。但是,我不知道如何在 Firebase 查询语法中实现这一点:
var usernameAlreadyExists = false
FIRDatabase.database().reference().child("usernames").queryOrderedByValue().queryEqual(toValue: self.username.text).queryLimited(toFirst: 1).observe(.childAdded, with: { snapshot in
// Username unavailable, chose another one
self.invalidUsernameMsg.text = "This username already exists, please choose another one."
print(snapshot)
print(snapshot.value)
usernameAlreadyExists = true
})
print(usernameAlreadyExists)
print(usernameAlreadyExists) --> 我希望这行打印“true”,但它打印“false”,因为上面的代码是异步执行的。
我们非常欢迎任何帮助。谢谢!
【问题讨论】:
标签: ios swift firebase firebase-realtime-database completionhandler