Ich verwende diese Funktion, um zu prüfen, ob ein bestimmter Handle in meiner Datenbank existiert. Es funktioniert in den meisten Fällen gut - wenn das Handle vorhanden ist, aktualisiert es die Tabellenansicht, um diesen Benutzer anzuzeigen. Wenn jedoch keine Übereinstimmung für das eingegebene Handle gefunden wird, wird meine Alert-Ansicht nicht angezeigt.Popup-Warnung wird nicht angezeigt, wenn keine Übereinstimmung in der Datenbank gefunden wird
// 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)
})
}
}
habe ich die Warnung in der Schleife als:
if handle.lowercased() != handleToSearch {
self.noHandleFoundAlert()
}
Aber offensichtlich ist dies nicht der richtige Ansatz, da es nicht funktioniert. Wenn ich eine zufällige Zeichenfolge oder ein Handle, von dem ich weiß, dass es nicht verwendet wird, eingeben, wird die Warnung nicht angezeigt. Wo sonst würde ich die Warnung setzen, damit es angezeigt wird, wenn es keine Übereinstimmung gibt?
Vor der Konvertierung des 'snapshot.value' zu einem' Dictionary', überprüfen, ob es mit 'snapshot.exists exists() ': https://firebase.google.com/docs/reference/ios/firebasedatabase/api/reference/Classes/FIRDataSnapshot#-exists –
Großartig, das hat es behoben. Ich setze einfach alles von 'wenn lastDict' in eine' if snapshot.exists() 'Bedingung mit dem' else', das 'noHandleFoundAlert' ist. Danke, und fühlen Sie sich frei, es als eine Antwort zu veröffentlichen, wenn Sie das Karma wollen! – KingTim