0

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.

+1

Sie anrufen 'dbref.removeAllObservers()' direkt nach dem Beobachter –

+0

@ReinierMelian auch wenn ich diese Zeile entfernen, hinzufügen. –

+0

Wenn Sie leer sagen, was Sie meinen, '" ''leere Zeichenfolge? –

Antwort

0

Versuchen Sie zu entfernen! vom Ende der Leitung: Ich bekomme immer noch das gleiche gleiche Verhalten

let url = user?["profileImage"] as? String 
+0

Sehen Sie das ist, was ich dachte, aber ich habe gerade versucht, eine Druckanweisung wieder einzusetzen, und ich hatte kein Glück, dass der Block gerade nicht ausführt. Ich habe auch den Debugger überprüft und URL enthält definitiv Null. –

+1

entfernen! vom Ende der Zeile: 'let url = user? [" profileImage "] als? String' –

+0

Das hat funktioniert, danke! Ich schätze die Hilfe sehr. –

Verwandte Themen