自分のコード内に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のコードをすべて実行すると思っていました。私はここで何が欠けています、なぜこのコードは他のすべてのコードを実行していません。
あなたはオブザーバー –
@ReinierMelianを追加した後、私はその行を削除した場合でも、私はまだ同じ同じ動作を取得 'dbref.removeAllObservers()'権を呼んでいます。 –
あなたは何を意味するかを空にすると、空の文字列ですか? –