我在我的代码中具有以下功能来从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语句。我在这里错过了什么,为什么这段代码不执行代码的其余部分。
您呼叫'dbref.removeAllObservers()'添加即使我删除了这一行观察者 –
@ReinierMelian之后,我仍然得到同样的相同的行为。 –
当你说清空你的意思时,''“'空字符串? –