Ich habe die folgende Funktion in meinem Code, um ein Benutzerprofilbild aus einer Firebase-Datenbank zu lesen.Warum wird das nicht ausgeführt, wenn der Block ausgeführt wird?
func setupProfile() {
profileImageView.layer.cornerRadius = 64
profileImageView.clipsToBounds = true
let uid = FIRAuth.auth()?.currentUser?.uid
let dbref = FIRDatabase.database().reference()
dbref.child("users").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in
let user = snapshot.value as? [String: AnyObject]
let username = user?["username"] as! String?
let url = user?["profileImage"] as? String!
if url == nil {
let pic = UIImage(named: "placeholderImage")
self.profileImageView.image = pic
dbref.removeAllObservers()
return
}
self.usernameLabel.text = "@" + username!
//self.profileImageView.downloadImage(from: url!)
})
dbref.removeAllObservers()
}
Aber wenn das Profilbild Feld ist leer, es immer noch nicht den Code ausgeführt wird innerhalb der
if url == nil
Block ausgeführt wird, ich bin mir dessen bewusst, dass observeSingleEvent ein Listener erstellt, die in den Daten für Änderungen sieht aber ich dachte, es würde den gesamten Code in 'mit' Schließung ausführen, was bedeuten würde, dass die if-Anweisung getroffen würde. Was fehlt mir hier, warum ist dieser Code nicht ausgeführt, der ganze Rest des Codes ist.
Sie anrufen 'dbref.removeAllObservers()' direkt nach dem Beobachter –
@ReinierMelian auch wenn ich diese Zeile entfernen, hinzufügen. –
Wenn Sie leer sagen, was Sie meinen, '" ''leere Zeichenfolge? –