Ich versuche, den lokalen Player Score in pScore zu speichern, aber nach dem Block die Variable immer gleich 0, Wie kann ich den "localPlayerScore! .value" in pScore: Int speichern.Store Variable innerhalb Completion Handler IOS Swift
let leaderBoardRequest = GKLeaderboard()
leaderBoardRequest.identifier = "leaderboard ID"
leaderBoardRequest.loadScoresWithCompletionHandler {
(scores, error) -> Void in
if (error != nil) {
print("Error: \(error!.localizedDescription)")
} else if (scores != nil) {
let localPlayerScore = leaderBoardRequest.localPlayerScore
self.pScore = Int(localPlayerScore!.value)
}
}
print("Local player's score: \(pScore)")
Sieht aus wie ein klassisches asynchrones Problem, das schon unzählige Male auf dieser Seite behandelt wurde. Es ist nicht so, dass Ihr 'pScore' nicht gesetzt wird, sondern dass' loadScoresWithCompletionHandler' die Anfrage im Hintergrund ausführt und daher sofort zurückkehrt. Daher wird Ihr Ausdruck vor dem Beendigungshandler aufgerufen. Verschieben Sie den Ausdruck in den Complete-Handler-Textkörper, um die abgerufene Punktzahl zum Drucken zu erhalten. – Hamish