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

工作,谢谢!我非常感谢帮助。 –

相关问题