为什么不执行此块

时间:2017-07-14 12:51:14

标签: ios firebase swift3 firebase-realtime-database firebase-authentication

我的代码中有以下函数来从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语句。我在这里缺少什么,为什么这段代码执行所有其余的代码都不是。

1 个答案:

答案 0 :(得分:0)

尝试删除!从行尾:

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