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