我想获取当前用户的xp并将其显示在标签中。用户的xp字段等于252,但它显示0.我可以获得其他字段,如电子邮件,用户名和密码,但无法获取xp字段的值。代码:
xpRequiredLabel.text = "\(PFUser.currentUser()!["XP"])/300 XP"
我做错了什么?
答案 0 :(得分:1)
此表达式PFUser.currentUser()!["XP"]
返回AnyObject?
。您需要打开此可选项并将其强制转换为字符串。试试这个:
let userXP = PFUser.currentUser()!["XP"] as! String
xpRequiredLabel.text = "\(userXP)/300 XP"
或者这个(不太容易出错):
if let userXP = PFUser.currentUser()?["XP"] as? String {
xpRequiredLabel.text = "\(userXP)/300 XP"
}
事实证明,在访问新属性之前,您必须从服务器获取对象。因此,您的代码应如下所示:
let user = PFUser.currentUser()!
user.fetch()
let userXP = ["XP"] as! Int // If you have "Number" as your column datatype
xpRequiredLabel.text = "\(userXP)/300 XP"
请注意,fetch()
会阻止用户界面。您也可以将此代码设为异步:
if let user = User.currentUser() {
user.fetchInBackgroundWithBlock({ (result, error) -> Void in
if let u = result as? PFUser {
if let userXP = u["XP"] as? Int {
self.xpRequiredLabel.text = "\(userXP)/300 XP"
}
}
})
}
答案 1 :(得分:0)
那些是Int值 ints invovled时252/300 = 0 你可以做点什么
xpRequiredLabel.text =“Float((PFUser.currentUser()![”XP“]))/ 300.0 XP”