首页 > 解决方案 > 如何在 swift 4 中处理排行榜响应

问题描述

我正在快速编写游戏,并想在游戏中心使用排行榜。获取排行榜分数的代码是从我的主屏幕上的 viewdidLoad() 方法调用的。我遇到的问题是获取分数是在后台完成的。这就是我将它们存储在 Userdefaults 中以便能够随时访问它们的原因。然而,从 GameCenter 加载它们需要很长时间。因此,如果用户打开游戏并直接开始玩游戏,则显示的高分为0。如果他在开始玩之前等待几秒钟,则会显示正确的高分。有什么想法我能做什么?在我正在使用的代码下方:

func getHighscore(){
    let leaderBoard: GKLeaderboard = GKLeaderboard()
    leaderBoard.identifier = "MemojiHighscore"
    leaderBoard.timeScope = .allTime
    leaderBoard.loadScores { (scores, error) in
    if error != nil {
        print("can not load highscore")
    } else {
        guard let scores = scores else {return}
        for score in scores {
            if score.value > UserDefaults.standard.integer(forKey: "highScoreFriends") {
                UserDefaults.standard.set(numericCast(score.value), forKey: "highScoreFriends")
            }
        }
    }
}

}

标签: swiftleaderboard

解决方案


推荐阅读