我如何处理swift 4中的排行榜响应

我如何处理swift 4中的排行榜响应,swift,leaderboard,Swift,Leaderboard,我正在用swift写一个游戏,想用gamecenter的排行榜。获取排行榜分数的代码是从我的主屏幕上的viewdidLoad()方法调用的。 我的问题是获取分数是在后台完成的。这就是我将它们存储在Userdefaults中以便随时访问它们的原因。 然而,要从GameCenter加载它们需要很长时间。 因此,如果用户打开游戏并直接开始玩游戏,则显示的高分为0。 如果他在开始播放之前等待几秒钟,将显示正确的高分。 你知道我能做什么吗? 下面是我正在使用的代码: func getHighscore()

我正在用swift写一个游戏,想用gamecenter的排行榜。获取排行榜分数的代码是从我的主屏幕上的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")
            }
        }
    }
}

}

您应该将用户的最新分数存储在userdefaults中,并从中读取以在启动时显示。在后台,您可以将用户得分发布到排行榜。只有在第一次启动时,当您在UserDefault中没有分数时,您才应该放置一个加载器来从排行榜获取分数。此外,如果您为此查询设置范围(
leadboard.range=NSMakeRange(0,1)
),可能会缩短加载时间。谢谢。我试试这个。但我该怎么做才能在创业时获得最好的朋友的高分呢?