将Firebase值(Int)转换为String会导致错误

时间:2016-10-03 10:06:57

标签: ios swift firebase firebase-realtime-database

我正在尝试从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中。

1 个答案:

答案 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中的对象