Outlet削除でのNSUnknownKeyExceptionエラー

スポンサーリンク

iOS/Swift のプロジェクトで、Storyboard を使って作成した Outlet を一旦削除して、もう一度作成し直そうとしたらはまりました。実行時に以下のエラーが発生しまして、最初何が原因か分からずちょっと立ち往生した。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

解決のヒントが以下の記事にありまして助かりました。ありがとうございます。

NSUnknownKeyExceptionが出た時の回避方法 | iPhoneアプリ開発者の憂鬱

ソースコード側の @IBOutlet の行のみを削除すると NSUnknownKeyException 発生

Storyboard を使って UI/View を組み立てる場合の話で…

例えば ViewController に UITableView の Outlet を作成する時は、Main.stroyboard で Table View のオブジェクトを Control キーを押しながら、アシスタントエディタに開いた ViewController にドラッグして Outlet を作成します。

それで、例えば変数名をタイポしたり名前を変更したい時に、もう一度最初からやり直したい場合に、ソースコード側の @IBOutlet の行を削除するだけですと、冒頭の NSUnknownKeyException の実行時エラーが発生します。

これやってしまいがちなミスだと思います、特に入門者は。

コネクション・インスペクターの Referencing Outlets も削除するとOK

Main.storyboard で outlet を作成した Table View を選択後、コネクション・インスペクター(Connections inspector)を開きますと、以下画像の通り Referencing Outlets に tableView の outlet が残っています。

Screen Shot 2015-05-25 at 19.20.22

最初から outlet を作成し直す場合、既に作成していた outlet である「tableView – アプリについて」の部分の×ボタンを押して、この Referencing Outlets も削除する必要があります。なので、これを削除しました。

そして、ソースコード側の @IBOutlet の行も削除した後、新たに Outlet を作成しなおしたら OK です。これで、NSUnknownKeyException の実行時エラーが出なくなりました。

知らないとはまる…。これも、私のような iOS/Xcode 入門者ははまりやすいポイントかもです。

スポンサーリンク
 
スポンサーリンク
  • 2件のコメント
  • うなさく

    私もまったく同じ問題にはまりましたが、おかげさまで解決できました。
    こういった記録は本当にありがたいです。

    • taka

      うなさくさん、こんにちは!この Outlet のエラーは初めてだとはまりやすいですよね。
      お役に立てたようで嬉しく思います。

Leave Your Message!