web-dev-qa-db-ja.com

このクラスは、キービューのキー値コーディングに準拠していません

私はxcodeを初めて使用します...アプリ(シンプルな電卓)が(シミュレーターとデバイス上で)かなり機能するようにしました。 summaryTargetのオプションでメインインターフェイスを設定すると、シミュレーターの起動時に次のエラーが発生します。

2012-04-14 12:17:27.123 CalcTest [27550:f803]*キャッチされない例外「NSUnknownKeyException」によるアプリの終了、

理由: '[<UIApplication 0x6a14650> setValue:forUndefinedKey:]:このクラスは、key calculatorScreenのキー値コーディングに準拠していません。

*まずスローコールスタック:(0x12db022 0x18f8cd6 0x12daee1 0xcc2022 0xc33f6b 0xc33edb 0xc4ed50 0x53671a 0x12dcdea 0x12467f1 0x53526e 0x536eb7 0x313ce1 0x313ff8 0x31317f 0x322183 0x316634 0x322c38 0x27fcef5 0x12af195 0x1213ff2 0x12128da 0x1211d84 0x1211c9b 0x312c65 0x314626 0x1bad 0x1b15 0x1)呼び出しが終了し、例外をスローしています(lldb)

問題を見つけるために、新しいビューベースのプロジェクトを開始しました。

シミュレータで空の新しいプロジェクトを実行します-> works、

しかし、メインインターフェイスをViewControllerに設定すると、summary-> Simulatorがクラッシュします

2012-04-14 12:11:17.492 crash [27494:f803]*キャッチされない例外「NSUnknownKeyException」によるアプリの終了、理由:

'[<UIApplication 0x6a6f4b0> setValue:forUndefinedKey:]:このクラスは、キービューのキー値コーディングに準拠していません。 *ファーストスローコールスタック:

(0x13c7022 0x1558cd6 0x13c6ee1 0x9bf022 0x930f6b 0x930edb 0x94bd50 0x23371a 0x13c8dea 0x13327f1 0x23226e 0x233eb7 0x10ce1 0x10ff8 0x1017f 0x1f183 0x1fc38 0x13634 0x12b1ef5 0x139b195 0x12ffff2 0x12fe8da 0x12fdd84 0x12fdc9b 0xfc65 0x11626 0x1d4d 0x1cb5)例外をスロー呼ば終了

問題の解決策はありますか?

50
hugoboss

View Controllerのプロパティ(IBOutlet)またはメソッド(IBAction)にリンクされているnib(xibファイル)にコントロールがあり、プロパティまたはメソッドを削除または名前変更した場合、ランタイムはそれを見つけることができません名前が変更されてクラッシュするためです。

この場合、プロジェクトのメインインターフェイスプロパティをViewController.nibに設定しました。これは問題です。メインインターフェイスとして使用する必要がある唯一のペン先にはUIWindowsがあり、そのペン先のファイル所有者はAppDelegateに設定する必要があるためです。ペン先のUIWindowは、ファイル所有者の(AppDelegate)ウィンドウプロパティにリンクする必要があります。ランタイムが探していた特性のないペン先でそれを設定したため、このエラーが発生します。

解決策は、UIWindowsを手動でセットアップする必要がないため、メインインターフェイスを空白のままにすることです。

91
Joseph DeCarlo

同じ問題が発生したため、xibファイルでControlキーを押しながら右クリックして、アウトレットの参照を確認しました。一部のコントロールがまだ古い名前を参照しており、このエラーが発生していることが判明しました。

12
pbeaumier

次のようなメッセージが表示された場合:

  • キャッチされない例外「NSUnknownKeyException」によるアプリの終了、理由:

'[setValue:forUndefinedKey:]:このクラスは、キーのキー値コーディングに準拠していません

breakPointナビゲーション領域の左下隅にある追加(+)をクリックし、「NSUnknownKeyException」が原因でクラッシュしているため、「例外ブレークポイントの追加」を選択し、「すべて」を選択します。プログラムを実行します。プログラムは最初の例外で停止します。

これを試して、[ファイルの所有者]を選択し、[接続インスペクター](右側のペインの上部)をクリックすると、すべてのアウトレットが表示されます。このような記号を探してください(!)欠落しているアウトレットを示す小さな円でそれを見つけます。あなたがしなければならないのは、適切にリンクするか、アウトレットを削除することだけです。

5
Diaa Den

これを試して、

Target => Build Phases => Compile Sourcesに移動します

次に、「calculatorScreen.m」を含めます

4
Vinay

私は同じ問題に直面していました。私の場合、.hファイルのテキストラベルの名前を変更していました。したがって、main.storyboardファイルにはそのラベルの複数の参照がありました。古い参照を削除すると、コードが機能し始めました。

2
Yo Solanki

最初のオプションを選択して、ターゲットメンバーシップを確認してください。

1
Krutarth Patel