我正在尝试从Firebase中的JSON树中获取一些值但是我收到错误:
无法转换类型' __ NSCFNumber' (0x1a7c497f0)到 ' NSString的' (0x1a7c55398)。
我设置值的方式是:
let values = ["username": username, "email": email, "reputation": reputation] as [String : Any]
我得到这样的价值:
self.databaseRef.child("users").child(self.loggedInUser!.uid).observeSingleEvent(of: .value) { (snapshot:FIRDataSnapshot) in
//store the logged in users details into the variable
print(self.loggedInUser)
let snapshot = snapshot.value as! [String: AnyObject]
self.usernameLabel.text = snapshot["username"] as! String
self.reputationLabel.text = snapshot["reputation"] as! String//This is giving me error
})
我做错了什么?是什么造成的?在Swift 2中它可以工作,但不是在Swift 3中。
答案 0 :(得分:1)
您从firebase检索的数据可能是double类型。试着用这个:
self.reputationLabel.text = "\(snapshot["reputation"])"
编辑:
如果这给你零,请尝试使用条件展开:
if let reputation = snapshot["reputation"] {
self.reputationLabel.text = "\(reputation)"
} else {
print("reputation is nil")
}
如果您的数据为零,则检查firebase中的数据名称以及db中的对象