Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift中同步检索PFUser objectForKey_Ios_Swift_Parse Platform_Parse Server_Pfuser - Fatal编程技术网

Ios 如何在Swift中同步检索PFUser 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

我正在尝试同步检索PFUser对象信息。然而,我尝试过使用fetch,但是我不断地得到实现错误。我想查找例如:PFUser.currentUser()?.objectForKey(“scoreNumber”),但我没有得到更新的值。我被告知我将使用fetch找到它,但我无法在我的fetch函数中实现objectForKey

一些尝试

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)
  }
}