2016-11-16 112 views
0

好的,所以我花了大量的时间搜索互联网寻求帮助,但没有成功,所以我想要一些帮助。从GKLeaderboard提取数据

我正在制作一款SpriteKit游戏,我决定实现我自己的排行榜风格,而不是笨重的Game Center默认设置。我设法将用户登录到GC,但无法找到用于从排行榜中提取信息的正确(和正在使用的)Swift 3代码。我想要将前10名得分以及当前用户得分(如果他们还没有进入前10名)。我想从他们那里得到的信息是位置,用户名和分数。

我知道这是一个相当简单的概念,但是每个在线教程都使用默认的GC视图,或者是过时的/过时的代码,它们不再适用。我只需要知道如何从排行榜中获取这些信息,然后我就可以自己处理这些信息!

感谢您提前给予任何帮助!

+0

https://developer.apple.com/reference/gamekit/gkleaderboard/1503160-loadscores中的示例是否适合您? – jjs

+0

不幸的是,我得到每一行的错误。我对swift很陌生,但即使是快速的代码?我得到的错误好像Xcode不能识别代码是如何写入的? –

+0

右上角有一个语言选择器。对我而言,Swift是默认的,但是由于某种原因,您可能会将Objective-C默认为默认值?尝试将语言切换到Swift。 – jjs

回答

2

这似乎是苹果没有在斯威夫特正确的示例代码,但这里是松散的基础上他们的Objective-C的例子迅捷的版本:

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) 
    } 
} 

注意,这仅仅是从苹果公司的Objective-翻译C代码,我还没有用真实数据测试过它。

+0

这段代码对我有很大的帮助,我已经比以前更进一步了,一个问题。您提供的代码似乎只能拉当前用户(我已保存了3个分数,但它只能打印登录的任何人),我想知道您是否有任何关于如何从排行榜打印每个分数的建议? –

+0

对不起,我实际上没有任何GameKit的经验。这只是ObjC代码示例的翻译。也许'GKLeaderboard'中的'range'属性可以让你获得不止一个分数? – jjs

+0

当我得到分数报告工作时,我可以为您提供测试答案......如果您在此处查看,我们将非常高兴:http://stackoverflow.com/questions/41051006/testing-gamecenter-leaderboards-in -simulator-do-you-have-to-submit-for-review/41990500#41990500 - 因为我无法提交比分/获得排行榜。谢谢! – John