swift - 如何在 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")
}
}
}
}
}
解决方案
推荐阅读
- python - 使用逻辑条件打印多个命名列
- tensorflow - 如何在 Google Colab 中降级 Cuda 和 cuDNN 版本?
- azure - 如何在 Kubernetes 上获取或设置非匿名 Azure 函数的密钥
- javascript - 在javascript es6中链接静态和非静态方法
- python - 由 Gluon-TS 示例生成的预测约为 0
- node.js - 使用passport.js返回的访问令牌的正确方法是什么?
- powershell - powershell中双引号字符串中的转义字符
- php - 三元运算符仅运行条件的第一部分
- optaplanner - OptaPlanner VRP 示例规划实体混淆
- r - R中蒙特卡罗模拟中矩阵的平均计算