web-dev-qa-db-ja.com

「NSUnknownKeyException」を解決するにはどうすればよいですか... setValue:forUndefinedKey:]:...キー値コーディングに準拠していません

さて、私はこのことをできるだけ簡潔にしようとします。キーボードの上にUIToolbarを配置したかったのですが、それを理解するのに時間がかかりましたが、最終的にはできましたが、ボタンに機能を追加しようとするとprevious* next *およびdone私のプログラムはまもなくコンパイルされません。

エラーメッセージ全体は次のとおりです。

2012-06-20 05:36:55.276 KegCop [79460:fb03]*キャッチされない例外 'NSUnknownKeyException'によるアプリの終了、理由: '[setValue :forUndefinedKey:]:このクラスは、完了キーのキー値コーディングに準拠していません。

*まずスローコールスタック:(0x134a022 0x1733cd6 0x1349ee1 0xd31022 0xca2f6b 0xca2edb 0xcbdd50 0x5a571a 0x134bdea 0x12b57f1 0x5a426e 0x7adeef 0x7ae03e 0x382d7a 0x382ff8 0x38217f 0x391183 0x385634 0x391c38 0x1f84ef5 0x131e195 0x1282ff2 0x12818da 0x1280d84 0x1280c9b 0x381c65 0x383626 0x2a8d 0x29f5 0x1)コールされた例外を終了(lldb)

@Abizernは、 キー値コーディングガイドのApple Doc を読むことを提案しました。とにかくそれはとても遅い、またはあなたがそれを見てどんなに早い。更新されたプロジェクトはここにあります: https://github.com/ipatch/KegCop

Zipをダウンロードして、ビルドしてみると、私が話していることがわかります。エラーはおそらくViewControllerWelcome.mファイルのどこかにあります。

32
ipatch

ストーリーボードまたはxib(使用している方)でViewControllerWelcomeオブジェクトを探します。このエラーの最も可能性の高い原因は、そのクラスのコードに存在しないdoneと呼ばれるアクションまたはアウトレットへの接続があるものです。

62
Phillip Mills

これを確認する最も簡単な方法は、ストーリーボードビューでコントローラーをCtrlキーを押しながらクリックし、結果のポップアップで黄色の警告マークが付いているものを探すことです。アウトレット名の横にある(x)を押して削除します。

34
kaskader

ストーリーボードを使用している場合は、すべてのViewControllerをクリックして、それらの接続インスペクターを選択します。感嘆符のサインがあるかどうかを確認します(接続が失われた場合)。

それらを適切に削除してから、プロジェクトを再度実行します。

4
Sauvik Dolui

同じ問題が発生しました。ViewControllerにxibを使用しましたが、削除しました。ただし、コードでは、接続は削除されたxibから接続を取得します。そのため、歩き回る方法は、viewcontrollerの新しいxibを作成することです。その後、問題は解決しました。

0
user2380132

私の場合、削除されたIBOutletsへの参照がすべてクラッシュしていても、Xcodeの奇妙なキャッシュでした。 IBOutletsは古いバージョンのファイルを指していたので、ファイルを削除して追加したり、ペン先からすべての参照コンセントを削除したりすることもできませんでした...

SOLUTION:xcodeを閉じるがうまくいきました。またプロジェクトのクリーニング/ディープクリーニングが助けになったかもしれません。

0
user2387149