无法获得PFUser字段

时间:2016-01-31 21:29:19

标签: ios swift parse-platform

我想获取当前用户的xp并将其显示在标签中。用户的xp字段等于252,但它显示0.我可以获得其他字段,如电子邮件,用户名和密码,但无法获取xp字段的值。代码:

xpRequiredLabel.text = "\(PFUser.currentUser()!["XP"])/300 XP"

我做错了什么?

2 个答案:

答案 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”