Ios 如何在Swift中同步检索PFUser objectForKey
我正在尝试同步检索PFUser对象信息。然而,我尝试过使用fetch,但是我不断地得到实现错误。我想查找例如:PFUser.currentUser()?.objectForKey(“scoreNumber”),但我没有得到更新的值。我被告知我将使用fetch找到它,但我无法在我的fetch函数中实现objectForKey 一些尝试Ios 如何在Swift中同步检索PFUser objectForKey,ios,swift,parse-platform,parse-server,pfuser,Ios,Swift,Parse Platform,Parse Server,Pfuser,我正在尝试同步检索PFUser对象信息。然而,我尝试过使用fetch,但是我不断地得到实现错误。我想查找例如:PFUser.currentUser()?.objectForKey(“scoreNumber”),但我没有得到更新的值。我被告知我将使用fetch找到它,但我无法在我的fetch函数中实现objectForKey 一些尝试 var score: String! func retrieveScore(){ guard let myUser = PFUser.currentUser
var score: String!
func retrieveScore(){
guard let myUser = PFUser.currentUser() else { return }
do{ let data = try myUser.objectForKey("scoreNumber")?.fetch()
try scoreNumber = data! as! String
}catch{}
}
另一个
您不应该为NSUserDefault保存用户。Parse SDK在为您管理会话方面做得很好。只需有一个特定的注销按钮,调用[PFUser logout]`函数 因此,fetch是一个异步操作。这意味着它在一个单独的线程上运行,然后主线程将继续执行下一个命令。因此,您正在调用fetch,它在后台获取一个对象,但随后您尝试从尚未获取的对象访问一个值。您需要从处理fetch调用结果的块中访问对象 当您使用
.fetch()
调用fetch时,它会在后台运行,但当您有数据时,也不会在获取失败时向您发出警报。这不是一种获取您立即需要的数据的好方法
您需要使用fetchinbackgroundithblock()
您确定您有一个已登录的用户吗?@ZonilyJame是的,我使用NSUserDefault保存该用户。
let userScore = PFUser.currentUser()?.objectForKey("scoreNumber")
let userScore2 = userScore.fetch()
scoreNumber.fetchInBackgroundWithBlock() {
(scoreNumber: PFObject?, error: NSError?) -> Void in
if error == nil && scoreNumber != nil {
print(scoreNumber)
} else {
print(error)
}
}