【发布时间】:2017-12-19 14:03:01
【问题描述】:
我的代码中有以下函数可以从 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 创建了一个侦听器来查找数据的变化,但我认为它会执行'with' 闭包中的所有代码,这意味着命中if 语句。我在这里缺少什么,为什么这段代码不执行所有其余的代码。
【问题讨论】:
-
您在添加观察者后立即调用
dbref.removeAllObservers() -
@ReinierMelian 即使我删除该行,我仍然会得到相同的行为。
-
当你说空是什么意思时,
""空字符串?
标签: ios firebase swift3 firebase-realtime-database firebase-authentication