我正在使用此函数来检查数据库中是否存在某个句柄。它大部分工作正常 - 如果句柄存在,它会更新表视图以显示该用户。但是,如果没有匹配输入的句柄,我的警报视图不会显示。当在数据库中找不到匹配时弹出警报不显示
// Search DB for matching handles
@IBAction func searchHandleButtonPressed(_ sender: Any) {
if let handleToSearch = handleSearchTextField.text?.lowercased() {
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("users").queryOrdered(byChild: "lowercaseHandle").queryEqual(toValue: handleToSearch).observeSingleEvent(of: .value, with: { (snapshot) in
if let snapDict = snapshot.value as? [String:AnyObject] {
for each in snapDict{
let key = each.key
let handle = each.value["handle"] as! String
self.returnedHandles.removeAll()
self.returnedHandles.append(handle)
let pic = each.value["profilePicture"] as! String
self.returnedUsersProfilePic = pic
self.returnedUsersUID = key
if handle.lowercased() != handleToSearch {
self.noHandleFoundAlert()
}
if handle != "" {
DispatchQueue.main.async {
self.getFriendsInfo()
self.tableView.reloadData()
}
}
}
}
}, withCancel: {(Err) in
// print(Err.localizedDescription)
})
}
}
我把警报在环路:
if handle.lowercased() != handleToSearch {
self.noHandleFoundAlert()
}
但很明显,这不是正确的做法,因为它不工作。如果我输入一个随机字符串,或者我知道的一个句柄没有被使用,警告就不会出现。如果没有匹配,我会在哪里放置警报以便显示出来?
的'snapshot.value'转换为'Dictionary'之前,检查它是否与'snapshot.exists存在() ':https://firebase.google.com/docs/reference/ios/firebasedatabase/api/reference/Classes/FIRDataSnapshot#-exists –
太好了,这个问题解决了。我只是把'if let snapDict'放在'if snapshot.exists()'的情况下,而'else'是'noHandleFoundAlert'。谢谢,如果你想要业力,随时发布它作为答案! – KingTim