我使用Game Center制作了一款游戏。除了一件事,一切都很好。大约50次中的1次,当创建一个新的比赛时,无论是随机对手还是邀请朋友,我的应用程序可能会因此错误被打印到我的控制台而崩溃:致命错误:在解开可选项时意外发现nil值。 Xcode还将我重定向到崩溃的“位置”,即turnBasedMatchmakerViewController:didFindMatch:delegate方法。你可以看到崩溃发生在下面的代码行。
为什么大部分时间都在工作,而且很少有人会崩溃,我不知道。
修复这个错误真的很难,因为我可以花5个小时直接尝试使崩溃发生,但没有成功。我,我自己,在很长一段时间内没有发生过这次崩溃,但苹果审核小组在审核我的应用时发生了这次崩溃。
这是我的代码:
func turnBasedMatchmakerViewController(viewController: GKTurnBasedMatchmakerViewController, didFindMatch match: GKTurnBasedMatch) {
currentMatch = match
presentingViewController.dismissViewControllerAnimated(true,
completion: nil)
let firstParticipant = match.participants![0] as GKTurnBasedParticipant //This is where my app crashes!
if firstParticipant?.lastTurnDate == nil {
delegate!.enterNewGame(match)
} else {
if match.currentParticipant?.player!.playerID == GKLocalPlayer.localPlayer().playerID {
delegate!.takeTurn(match)
} else {
delegate!.layoutMatch(match)
}
}
}
修复此问题是我在App Store中首次使用我的应用程序的唯一方法,因此非常感谢所有类型的帮助
答案 0 :(得分:0)
将delegate!.
更改为delegate?.
。