Ich versuche, um zu prüfen, ob ein Schlüssel/Wert (TestKey/Testvalue) an einem Knoten vorhanden ist, und wenn es A tut und wenn es nicht B. machtWie verwendet man Nil im Kontrollfluss mit Firebase-Snapshots? (Swift)
Ich habe diesen ähnlichen Thread gefunden in Bezug auf StackOverflow, aber keine der Lösungen schien für mich zu arbeiten: Checking if Firebase snapshot is equal to nil in Swift
Ich habe eine Datenbank eingerichtet, die bereits das Schlüsselpaar TestKey/TestValue eingefügt hat. Hier ist mein Code:
var ref: FIRDatabaseReference!
ref = FIRDatabase.database().reference()
ref.observeSingleEventOfType(.Value, withBlock: { (snapshot) in
//A print test to see stored value before control flow
print(snapshot.value!["TestKey"]) //returns TestValue
print(snapshot.value!["NilKey"]) //returns nil
// I change the value from TestKey <-> NilKey here to test the control flow
if snapshot.value!["TestKey"] != nil {
print("Exists currently")
} else {
print("Does not exist currently")
}
}) { (error) in
print(error.localizedDescription)
}
Das Problem ist, dass nur „A“ ausgeführt wird, selbst wenn der Drucktest zeigt, dass das Ergebnis gleich Null ist.
Ich habe versucht, die Operationen mit == Nil umzukehren und habe auch versucht "is NSNull".
Ich kann nicht scheinen, um den Kontrollfluss richtig zu funktionieren. Vielleicht eine der folgenden ist der Schuldige, aber ich bin nicht sicher:
- Interaktion von Persistenz mit observesSingleEventOfType
- nicht den Beobachter zu entfernen (muss ich auch für observeSingleEventType?)
- etwas mit optionals zu tun
- etwas mit asynchronen Aufrufen
- etwas zu tun mit der Tatsache zu tun, dass Feuerbasis speichert NSAnyObjects
Letztlich ist es das Ziel zu überprüfen, ob ein Schlüssel/Wert-Paar existiert und falls es existiert: tue nichts, aber wenn es nicht existiert: Erstelle es. Was mache ich falsch und wie kann ich diesen Kontrollfluss zum Laufen bringen?