ベルマークのない自由帳

ベルマークのない自由帳

有益と無益の境界例

iOSアプリ開発メモ No.4 -NSUnknownKeyException-

(入門形式でやってくの疲れたのでやめます…。)
 
ビルドして実機で動作確認をしようとしたところ、ビルドはSuccessなのに端末上でアプリがフリーズ…。
右下のデバッグ画面でログを確認すると'NSUnknownKeyException'なんて書いてある。
その後には
 

reason: ‘[<Hoge.ViewController 0x129d86750> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key hogeHoge.'

 

となっていて「Hoge.ViewControllerにセットされてるhogeHogeというキーが存在しないよ!」とか言っているわけです。
初心者にとっては「なんのこっちゃ」という話なので調べてみました。
 

削除したOutletのConnectionが残ってた!

結論から言うと「ViewController.swiftにOutletとしてConnectした後、その変数を削除してもパーツ同士のConnectionは残る」らしいです。
「(実体がなくても)うちらズッ友だよ!」という具合にConnecitonだけ残しやがるので「そんなキーないよ!」とログに吐き出すんですね。
 

解決方法

解決策としてはMain.storyboardで「削除済みのOutletとConnectionがあるパーツ」を右クリックします。
すると以下のような見慣れない画面が出るので、Referencing Outletsという部分で既にないパーツとのConnectを見つけて[×]を押して解除します。
 

f:id:Mantra:20180211095844p:plain

 
これで無事解決しました。
なんで自動でConnectionの解除やってくれないのだろうか…。
 
今回参照したページはこちら。