0

我在我的代碼中具有以下功能來從Firebase數據庫讀取用戶個人資料圖片。爲什麼不是這個如果block正在執行

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創建一個偵聽器,以查找數據變化但我認爲它會執行'with'關閉中的所有代碼,這意味着會碰到if語句。我在這裏錯過了什麼,爲什麼這段代碼不執行代碼的其餘部分。

+1

您呼叫'dbref.removeAllObservers()'添加即使我刪除了這一行觀察者 –

+0

@ReinierMelian之後,我仍然得到同樣的相同的行爲。 –

+0

當你說清空你的意思時,''「'空字符串? –

回答

0

試着移除!從行的末尾:

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

看到這就是我的想法,但我只是試圖再次打印聲明,我沒有運氣塊沒有執行。我也檢查過調試器,URL絕對包含零。 –

+1

刪除!從行尾:'let url = user?[「profileImage」] as?字符串' –

+0

工作,謝謝!我非常感謝幫助。 –

相關問題