私はデバッグを理解しようとすると新しいです、私は挑戦しています。 私はこの問題の解決策について質問しており、StackOverflow内でそれを見つけられませんでした。私はここで何が起きているのか、なぜこのクラッシュが起こったのかをよりよく理解するために結びついています。Swiftのオプションのクラッシュを解く
ソースコードのprint文でバグを追跡しました。私はブロックに到達していることを確認するために、この関数の先頭にprintステートメントを追加しました。
@IBAction func bugTypeSelected(_ sender: UIButton) {
print("bugTypeSelected reached")
bugFactory.currentBugType = BugFactory.BugType(rawValue: Int(sender.currentTitle!)!)!
self.dismiss(animated: true, completion: nil)
}
私はアプリを実行し、モーダル設定のバグのいずれかをクリックすると、print文は、コンソール、その後、アプリのクラッシュに印刷されます。 Xcodeは、問題は、このライン内にあることを私に語っている:エラーがそう
“Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value.”
を読み込み
bugFactory.currentBugType = BugFactory.BugType(rawValue: Int(sender.currentTitle!)!)!
、私がnilの値を使用すると、アプリがクラッシュすることを理解しています。私はまた、私がここでオプショナルズと一緒に働いていることを理解しています。私は次に何をすべきかに固執しています。
のに役立ちます。値をラップ解除できない場合は、 'guard let'または' if let'を使用してエラー出力を追加してください。この方法でエラーを見つけることができます。 – dasdom
@dasdom *あなたは! Swift *のオペレータは白黒すぎます。強制的なアンラッピングが絶対に安全で、デザインエラーを明らかにするグレー*(ケース)の*レベルが多数あります。しかし、あなたは**この**特別なケースで正しいです。 – vadian
@vadian私の意見では、最初にSwiftに追加されてはいけません。しかし、ObjCのために追加する必要がありました。 – dasdom