0

自分のコード内にfirebaseデータベースからユーザーのプロフィール画像を読み込むための次の機能があります。なぜブロックが実行されていない場合

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() 
} 

しかしprofileImageフィールドが空の場合、それはまだ

内のコードを実行していない
if url == nil 

実行ブロック、私はobserveSingleEventは、データの変更を探しリスナーを作成することを承知していますしかし、私はif文を打つことを意味する 'with' closureのコードをすべて実行すると思っていました。私はここで何が欠けています、なぜこのコードは他のすべてのコードを実行していません。

+1

あなたはオブザーバー –

+0

@ReinierMelianを追加した後、私はその行を削除した場合でも、私はまだ同じ同じ動作を取得 'dbref.removeAllObservers()'権を呼んでいます。 –

+0

あなたは何を意味するかを空にすると、空の文字列ですか? –

答えて

0

お試しください!行の末尾から:

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

それは私が思ったことを参照してください、しかし、私はもう一度printステートメントを入れてみました。ブロックが実行されていないという運がなかった。私もデバッガをチェックして、URLにはゼロが含まれています。 –

+1

削除!行の最後から: 'let url = user?[" profileImage "]? String' –

+0

これはうまくいった、ありがとう!私は本当に助けに感謝します。 –

関連する問題