如何从iOS排行榜中检索分数?

如何从iOS排行榜中检索分数?,ios,swift,game-center,Ios,Swift,Game Center,我想用Swift中的gk排行榜显示gk玩家的最高分数 func login() { if (GKLocalPlayer.localPlayer().authenticated) { var leaderboardRequest: GKLeaderboard! leaderboardRequest.identifier = "Best_Score" // Error: fatal error: unexpectedly found nil wh

我想用Swift中的
gk排行榜显示
gk玩家的最高分数

func login() {

if (GKLocalPlayer.localPlayer().authenticated) {

        var leaderboardRequest: GKLeaderboard!
        leaderboardRequest.identifier = "Best_Score"

        // Error: fatal error: unexpectedly found nil while unwrapping an Optional value
        func loadLeaderboardsWithCompletionHandler(completionHandler: (([AnyObject]!,
            NSError!) -> Void)!) {

             var localPlayerScore: GKScore = leaderboardRequest.localPlayerScore
        }
    }
}
尽管如此,
func loadLeaderboardsWithCompletionHandler
返回此错误消息:
致命错误:在展开可选值时意外发现nil
,因为我正在强制展开包含nil的可选值


我的代码的错误在哪里?

您正在声明
GK排行榜,但没有初始化它。还请注意,
LoadLeaderBoard WithCompletionHandler
是GKLeaderBoard的一个类函数。改为这样做:

if (GKLocalPlayer.localPlayer().authenticated) {
    GKLeaderboard.loadLeaderboardsWithCompletionHandler { objects, error in
       if let e = error {
           println(e)
       } else {
           if let leaderboards = objects as? [GKLeaderboard] {
               for leaderboard in leaderboards {
                   if let localPlayerScore = leaderboard.localPlayerScore {
                        println(localPlayerScore)
                   }
               }
            }
       }
   }
}

作为旁注,隐式使用未包装的选项是不安全的,例如,使用
声明的任何内容。以您的程序为例:您可以对其进行编译,并且必须仔细查看代码以找到实际发生运行时错误的位置。如果您声明了
var排行榜request:gkleadboard?
,您将能够立即识别问题的根源,而无需编译和运行。

谢谢!我应该在
参数中插入什么?
?我已经能够使用断点识别问题的根源。事实上,执行此代码时会出现问题:
func loadleadboardswithcompletionhandler
。再次感谢你的帮助。非常感谢。这是这里的几个问题之一。我刚刚看了GK排行榜的文档,看了我修改后的回复,谢谢你更新你的答案。不幸的是,你答案中的代码使我的应用程序崩溃。我使用了一个断点,并检测到一旦编译器在展开可选值时通过
gkleadboard.loadleadboardswithcompletionhandler
找到
nil
。感谢您再次更新您的答案!我感谢你花时间帮助我解决这个问题。即使使用新代码,问题仍然存在。我在
gkleadboard.loadLeadboardswithCompletionHandler中放置了一个断点{objects,error in
和I get
致命错误:在展开可选值时意外发现nil
。再次感谢您的帮助。在if语句中声明函数正常吗?我认为声明不正常。您想要的是使用它,正如blacksquare在下面向您展示的(类方法)。