我是swift和firebase的新手,我想知道为什么我收到的snapshot.value为?即使用户已登录,NSDictionary仍为nil。
let uid = Auth.auth().currentUser?.uid
Database.database().reference().child("users").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in
print(snapshot.value as? NSDictionary)
if let value = snapshot.value as? NSDictionary{
self.title = value["firstname"] as? String
print("o")
}
print(self.title)
}, withCancel: { (error) in
print(error.localizedDescription)
})
}
//I want it to return the name of the user (Ben) as the title of the navigation bar, but instead it returns nil
数据库为:
{
"users" : {
"-MBzED86cdVbvBNcYdpY" : {
"email" : "bb@gmail.com",
"firstname" : "benjamin",
"username" : "bb"
},
"-MBzEWEQ3cX6d5aJOByR" : {
"email" : "bslou.row@gmail.com",
"firstname" : "bslou",
"username" : "bbbslou.row"
}
}
}
我打印快照时程序返回“ Snap(mDNGl4fQXEMx1wPnjGuhILp5f8j1)”
答案 0 :(得分:1)
数据库中“用户”下的子项不是Firebase Auth用户ID。它们看起来像随机生成的推送ID(又称“自动ID”)。您使用UID的查询根本不会找到这些子级。请注意,快照的ID与数据库完全不匹配。快照快照为空-不包含任何数据。
您将不得不回到创建这些子代并使用用户的实际UID的代码,而不是使用自动ID。