Game Centerを使用してゲームを作成しました。 1つのことを除いてすべてが素晴らしいです。 50回中1回、新しい試合を作成するときにランダムな相手か友人を招待すると、アプリがクラッシュしてこのエラーがコンソールに表示される:致命的なエラー:アンラッピング中に予期せずnilが表示される 。また、Xcodeはクラッシュの「場所」に私をリダイレクトします。これは、turnBasedMatchmakerViewController:didFindMatch:delegateメソッドです。下のクラッシュが発生したコードの行を確認できます。アプリケーションがturnBasedMatchmakerViewController:atFindMatch:デリゲートメソッドでクラッシュすることがあります
ほとんどの時間が動作し、何か稀な時間がクラッシュする理由は分かりません。
このバグを修正するのは本当に難しいです。なぜなら、私は突然、クラッシュを起こさせるために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)
}
}
}
はとても助けのすべての種類が大幅に
エラーメッセージは、 'match.participants![0]'は 'nil'であることを示します。このクラッシュを修正するには 'if let'構文を使用してください(オプション値のアンラッピング中に予期せぬ発見されたすべてのエラーメッセージと同様)。基本的には、強制的アンラップオプションは悪い、悪い考えです。 –