Game Center提交方法导致nil可选解包错误

时间:2017-12-02 21:46:08

标签: ios swift nsuserdefaults optional

我正致力于为我的应用添加GameCenter支持。我在视图控制器中有以下方法

func submitToGC(newScore: Int) {
    // Submit score to GC leaderboard
    let bestScoreInt = GKScore(leaderboardIdentifier: LEADERBOARD_ID)
    bestScoreInt.value = Int64(newScore)
    GKScore.report([bestScoreInt]) { (error) in
        if error != nil {
            print(error!.localizedDescription)
        }
    }
}

当使用任何值调用时,代码会在解包可选值"时生成"意外发现的nil;错误。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

为什么不使用if let打开可选项而不是强行解包呢?

if let highestScore = UserDefaults.standard.object(forKey: "HighestScore") as? Int{
   viewController.submitToGC(newScore: highestScore)
}

答案 1 :(得分:0)

如果在同一课程中定义了submitToGC,则您不需要使用B来调用该函数,您只需使用viewController.submitToGC即可。最好先打开变量,然后将该值放入函数中,如下所示:

submitToGC

答案 2 :(得分:-1)

解决方案是实例化GameViewController,然后使用该实例调用其方法。