Saya mencoba memeriksa untuk melihat apakah kunci/nilai (TestKey/TestValue) ada di sebuah node dan apakah itu melakukan A dan jika tidak melakukan B.
Saya telah menemukan utas serupa mengenai hal ini di StackOverflow tetapi sepertinya tidak ada solusi yang berhasil untuk saya: Memeriksa apakah snapshot Firebase sama dengan nil di Swift
Saya memiliki pengaturan database yang sudah memasukkan pasangan kunci TestKey/TestValue. Ini kode saya:
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)
}
Soalnya hanya "A" yang dieksekusi, padahal dari tes print hasilnya nihil.
Saya telah mencoba membalikkan operasi dengan == nil dan juga mencoba "is NSNull".
Sepertinya saya tidak bisa membuat aliran kontrol berfungsi dengan baik. Mungkin salah satu dari berikut ini adalah pelakunya tetapi saya tidak yakin:
- interaksi ketekunan dengan observasiSingleEventOfType
- tidak menghapus pengamat (apakah saya perlu melakukannya untuk observasiSingleEventType?)
- ada hubungannya dengan opsional
- ada hubungannya dengan panggilan asinkron
- ada hubungannya dengan fakta bahwa firebase menyimpan NSAnyObjects
Pada akhirnya tujuannya adalah untuk memeriksa apakah pasangan kunci/nilai ada dan jika memang ada: jangan lakukan apa pun kecuali jika tidak ada: buatlah. Apa yang saya lakukan salah dan bagaimana cara agar aliran kontrol ini berfungsi?