Androidはワンツーパンチ 三歩進んで二歩下がる

プログラミングやどうでもいい話

Appleの公式iOSチュートリアル「FoodTracker」で delegate = self のところで Thread 1: exc_bad_instruction (code=exc_i386_invop subcode=0x0)

Swift3.2使用です。

テキスト入力のコールバック設定のところでビューにselfを代入しているところでクラッシュしました。

該当のソースコード

  override func viewDidLoad() {
    super.viewDidLoad()

    // Handle the text field’s user input through delegate callbacks.
    nameTextField.delegate = self
  }

クラッシュのメッセージは下記の通りです。
ソースコード

Thread 1: exc_bad_instruction (code=exc_i386_invop subcode=0x0)

エラーログは

“fatal error: unexpectedly found nil while unwrapping an Optional value” 

“unwrapping an Optional value
と書いてあるのでオプショナル型の記述方法が何か悪かったのだろうかと最初思いましたが、
それは関係なく(そもそも接続時に勝手に設定されるし)
nameTextFieldが定義してあるにも関わらずnilになっているのはStoryboardからの接続が
上手く出来ていないためでした。
チュートリアル通りにやったつもりだったんですが、いじっているうちに変なことをしたようです。

@IBOutletの接続の部分をやり直してクラッシュが解決しました。


今回検索してこちらのOptional型についてのいい説明に出会いました。
是非ご覧ください。
stackoverflow.com


チュートリアルの該当箇所は
↓の章の一番下あたりです。
https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/ConnectTheUIToCode.html#//apple_ref/doc/uid/TP40015214-CH22-SW1