Я пытаюсь сохранить счет локального игрока в pScore, но после блока переменная всегда равна 0, Как я могу сохранить «localPlayerScore! .value» в pScore: Int.Хранить переменную внутри обработчика завершения 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)")
Похож на классическую асинхронную проблему, которая раньше была покрыта бесчисленными количествами на этом сайте. Это не значит, что ваш 'pScore' не будет установлен, это значит, что' loadScoresWithCompletionHandler' выполнит запрос в фоновом режиме и, следовательно, немедленно вернется. Поэтому ваш запрос будет вызываться перед обработчиком завершения. Переместите свою печать в тело обработчика завершения, чтобы получить полученную оценку для печати. – Hamish