Game Center提交方法导致无可选解开错误

我正在为我的应用添加GameCenter支持。我有以下方法在我的视图控制器Game Center提交方法导致无可选解开错误

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)

}

}

}

当与任何值调用时,该代码生成“意外地发现零而展开可选值”的错误。

我该如何解决这个问题?

回答:

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

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

viewController.submitToGC(newScore: highestScore)

}

回答:

如果submitToGC在同一个类中定义的,你不需要使用viewController.submitToGC调用的函数,你可以只使用submitToGC。此外,它最好是先解开的变量,然后把该值到函数是这样的:

if let value = UserDefaults.standard.object(forKey: "HighestScore") as Int { 

submitToGC(newScore: value)

}

回答:

解决的办法是实例化一个GameViewController,然后调用其与该实例的方法。

以上是 Game Center提交方法导致无可选解开错误 的全部内容, 来源链接: utcz.com/qa/258474.html

回到顶部