web-dev-qa-db-ja.com

setValue:forUndefinedKey:]:

FinalViewWithSending *newView = [[FinalViewWithSending alloc]initWithNibName:@"FinalViewWithSending" bundle:nil];
newView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:newView animated:YES]; //it crashes here with a thread 1 error, SIGABRT error..

それは言う:

"Terminating app due to uncaught exception 'NSUnknownKeyException', 
reason: '[<FinalViewWithSending 0x1bef70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key loginButton.'"

LoginButtonという変数がないので、なぜエラーが発生するのかわかりません...

ありがとうございました

20
Szwedo

エラーが発生します原因 loginButtonというプロパティはありません。 .xibファイルを確認します。クラスコードに存在しないとしても、loginButtonを指定するFinalViewWithSendingオブジェクト(おそらくファイルの所有者)への不正なリンクがほぼ確実に存在します。

34
Phillip Mills

フィリップミルズは正しいです。

ここでの答えは、検索するすべての人にとって、ストーリーボードを編集して、指定された未定義のキーへのリンクを削除することです。外部エディタでストーリーボードファイルを編集する必要があります。階層内のストーリーボードリストを右クリックして、[Finderに表示]またはあなたが持っているものをクリックします。テキストエディターで開き、検索して上記のリンクを削除し、保存してXcodeに戻ります。これ以上の問題はありません。

これは、ビューコントローラーから何かを不適切に削除した場合に発生します。

9
timquinn

ここで同意-Phillip Millsは正しいです。

誰かがストーリーボードをテキストエディターで開くと述べました-これは必要ありません。

ストーリーボードをクリックするだけで、接続インスペクタに移動します。問題のあるコンセントがある場合は、コンセントの横に感嘆符が表示されます。消して。

8
Snowcrash

これがこのエラーの最初の検索結果なので、私は新人のような回答を書くことにしました。

ViewControllerでコードを生成するボタンからCtrlでドラッグされた接続があり、接続を削除せずにコードのみを削除した場合、このエラーが発生します。

アクションとして追加したいときに、誤っていくつかのボタンをアウトレットとして追加したため、このエラーが発生しました。生成されたコードを削除しましたが、接続不良がまだ残っていました。

それらを見つけて削除するには、「表示」->「ユーティリティ」->「接続インスペクタの表示」

次に、使用しているさまざまなボタンをクリックし、[x]をクリックして不良な接続を削除します。

enter image description here

5
Joshua Dance

ローカライズがある場合は、すべてのストーリーボードで不良リンクを検索します(ストーリーボードを展開してローカライズされたストーリーボードを見つけます)。

これが私の状況でした。私は1つのストーリーボードで不良リンクを探していましたが、ローカライズされたものでした。

2
Yan Arbanov

私は同じ問題を抱えていました:

以前、テキストフィールドからヘッダーファイルにストーリーボードを使用して接続していました。後で、オブジェクトの接続の名前を変更することを決定しましたが、残念ながら接続を適切に切断していません。この問題が私の問題と同じである場合、以前はボタンへの接続が存在し、ヘッダーのコードは削除されましたが、接続は削除されませんでした。

あなたが探しているビューでオブジェクトの接続を確認してください。

1
kjbradley

私がsetValue:forUndefinedKey:]:の問題を修正するために使用した方法を試すことができます。

http://i.stack.imgur.com/PDjub.png

1
James Wang

この返信は、質問が行われた時間よりも遅れる可能性がありますが、この問題が発生したため、ここに掲載されているすべての解決策を試しましたが、どれもうまくいきませんでした。

これは、将来誰でも助けることができる私の解決策です。

最初の問題、:カスタムセルクラスを使用して接続を確立し、すべてがアプリで正常に機能した後、カスタムセルクラスの名前を変更してアプリを実行しましたが、setValue:forUndefinedKey:]エラーでクラッシュしました。

My solution:.xibファイルをクリックし、IDインスペクタを選択して、カスタムクラス->クラスタグに新しい名前付きクラスを入力しました。アプリのエラーを解決しました。

0
Franklyn

おそらく、以前にLoginButton、Cmd + Shift + Fを作成し、「LoginButton」を見つけて、参照アウトレットを削除して再構築しました。

0
Vikram Belde

関連付けられたオブジェクトを使用して、サブクラス化を回避できます。 setValue:forKey:とsetValue:forUndefinedKey:の詳細については、ヘッダーファイル(NSKeyValueCoding.h)を参照してください。

あなたの説明によると、あなたのインターフェースビルダーでnewViewを見つけて右クリックすると、異常なloginButtonのようなものが表示されます。

0
Scott Zhu

FinalViewWithSendingビューコントローラーのxibの接続インスペクターに移動し、ログインボタンの参照を削除します。その後、実行されます。それを試してみてください... :)

0
iYoung

今日私は働いていて、これと同じエラーを提示しました、Phillip Millsの応答が正しいことを使用し、リンクが割り当てられていなかった1つのViewController.xibにいくつかのラベルがありました。 、フィリップミルズの回答に感謝します。

0
juanmorillios