-1

I get the following error when I try to enter text into a text field:

'NSInvalidArgumentException', reason: '-[NSNull length]: unrecognized selector sent to instance

This happens when I try to type in some text into a textfield. I'm testing this on an empty view inside a view controller. I have created the IBOutlet for the text field and set its delegate to my controller. Not sure what I'm missing.

UPDATE So when I try this on a new storyboard by adding a new view controller and just one text field, it does not throw this exception. Perhaps something wrong with this storyboard?

4

3 に答える 3

0

あなたはコードを投稿していないので、最も一般的なケースでエラー メッセージが何を意味するかを説明することしかできません。

が使用される最も一般的な場所であるため、コレクションからアイテムを引き出しているようですNSNullNSNullもちろん、参照するコードなしで、私たちが見ることができない何か他のことをしている可能性があります。

おそらく であることが意図されているものの長さを取得しようとしていNSStringますが、実行時には実際には であり、メソッドが定義されNSNullていません。lengthNSNull は未定義のセレクターの呼び出しを拒否するため、オブジェクトが存在するかどうかを確認NSNullし、何か他のことを行う必要があります。

if (text == [NSNull null]) {
  // do something different
} else {
    text.length; // call methods on NSString
}

NSNullのように動作することを期待している場合nil、両者は大きく異なります。Nil は、認識しないメソッドに対してエラーをスローしません。何もしないだけで、NSNull オブジェクト (実際にはシングルトン/フライウェイト) はクラッシュします。NSNull配列や辞書などでそれらを使用しているかどうかを常に確認する必要があります。NSNull別の目的で使用している場合は、代わりに nil を使用することを検討してください。

于 2013-10-31T05:09:06.203 に答える
0

Nil オブジェクトのメソッドの長さを呼び出します。viewController アウトレットが textField と @synthesize youTextField にリンクされていることを確認してください

于 2013-10-31T08:47:34.017 に答える