从 GKLeaderboard 中提取数据
Posted
技术标签:
【中文标题】从 GKLeaderboard 中提取数据【英文标题】:Pulling data from a GKLeaderboard 【发布时间】:2016-11-16 11:29:05 【问题描述】:好的,所以我花了很多时间在互联网上寻找帮助,但没有成功,所以我需要一些帮助。
我正在使用 SpriteKit 制作游戏,我决定实现自己的排行榜样式,而不是笨拙的 Game Center 默认设置。我已设法将用户登录到 GC,但找不到正确(且有效)的 Swift 3 代码来从排行榜中提取信息。我想获得前 10 名的分数以及当前用户的分数(如果他们还没有进入前 10 名)。我想从他们那里得到的信息是位置、用户名和分数。
我知道这是一个相当简单的概念,但每个在线教程要么使用默认的 GC 视图,要么是非常陈旧/过时的代码,不再适用。我只需要知道如何从排行榜中提取这些信息,然后我就可以自己处理了!
提前感谢您的帮助!
【问题讨论】:
developer.apple.com/reference/gamekit/gkleaderboard/… 中的示例对您有用吗? 不幸的是,我在每一行都收到错误。我对 swift 很陌生,但这甚至是 swift 代码吗?我得到的错误好像 Xcode 无法识别代码是如何编写的? 右上角有一个语言选择器。对我来说,Swift 是默认设置,但也许您出于某种原因将 Objective-C 作为默认设置?尝试将语言切换为 Swift。 我以前从未注意到这一点,但是是的,我的默认设置是 swift。我刚刚尝试在两者之间切换,它们的示例代码在两者上都保持不变。这就是为什么我如此困惑的原因,因为我只想将数据拉下来,但我在任何地方都找不到有效的 Swift 代码。 选择 Swift 不会为我显示 Swift 代码 - 只是 Objective C。 【参考方案1】:Apple 似乎在 Swift 中没有适当的示例代码,但这里有一个基于其 Objective-C 示例的 Swift 版本:
let leaderboard = GKLeaderboard()
leaderboard.playerScope = .global
leaderboard.timeScope = .allTime
leaderboard.identifier = "YourIdentifier"
leaderboard.loadScores scores, error in
guard let scores = scores else return
for score in scores
print(score.value)
注意,这只是 Apple 的 Objective-C 代码的翻译,我没有用真实数据测试过。
【讨论】:
那段代码对我帮助很大,我比以前更进一步,一个问题。您提供的代码似乎只吸引了当前用户(我保存了 3 个分数,但它只打印登录的人),我想知道您是否有任何建议如何让它打印排行榜中的每个分数? 抱歉,我实际上对 GameKit 没有任何经验。那只是对 ObjC 代码示例的翻译。也许GKLeaderboard
中的range
属性可以让您获得不止一个分数?
当我得到分数报告后,我可以为您提供一个经过测试的答案......如果您看一下这里,我们将非常高兴:***.com/questions/41051006/… - 因为我无法提交分数/ 获得排行榜。谢谢!
尝试了此代码,但不断收到以下错误:“请求的操作无法完成,因为一个或多个参数无效。”有人知道解决这个问题吗?以上是关于从 GKLeaderboard 中提取数据的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI GKLeaderboard loadEntries