2011-12-19 6 views
2

私は2つの文字列の両方に値nullを持っています。nullチェックNSString

if([textField.text isEqualToString:str]) 
{ 
//Some code 
} 

はどちらヌルですが、コントロールが条件の場合に取得されていません。私は、文字列を比較していたとき、私はいくつかの問題を抱えています。
助けてください。
おかげで、
ストーン

+0

strの値を取得した場所から取得してください。あなたの問題を理解するための詳細情報を提供してください。 – MinuMaster

+0

@hotlicks:私を修正するためのthnx。もちろん、あなたはr8。 – iCoder4777

答えて

2

[nil anyMethodName]は常にゼロを返します/ NO。ヌルケースを処理するには、==と比較する必要があります(ただし、null以外の場合を処理するには、isEqualsという形式と比較してください)。

0

isEqualToStringは、NULLであるポインタ(textField.textstr)はオブジェクトを指しません。メッセージをnilに送信することは許可され、nilを返します。

このような場合は、ポインタが有効なオブジェクトを指していることを確認します。その場合は、NSStringオブジェクトです。

おそらく:

if((textField.text==nil && str==nil) || [textField.text isEqualToString:str]) 
{ 
//Some code 
} 
+0

また、最初のテストを 'textField.text == str'にすることもできます。 –

+0

はい、しかし、それはアドレスが比較されているように見え、やや誤解を招くようなコードは好きではありません。私の気持ちは、「無」がより明確であるということです。 – zaph

+0

アドレスは比較されています。 2つのストリングが1つで同じものであれば、2回目のテストは短絡されますが、これは非常に上手です。 –

0

私は、

あなたが何をしたいのかよく分からないが、あなたが何かをしたい場合は、テキストフィールドが空白のときに

if([textField.text isEqualToString:@""]) 
{ 
//Some code 
} 
0

これを書くことができます:

NSString *s1 = nil; 
NSString *s2 = nil; 

// you can compare two nils 
if (s1 == s2) 
{ 
    NSLog(@"=="); 
} 

// s1 is nil so you shouldn't send a message to it 
if ([s1 isEqualToString:s2]) 
{ 
    NSLog(@"isEqualToString"); 
} 

Out puts:

2011-12-19 07:33:54.651 Craplet[2845:707] == 
0

あなたは何をしたいですか?私はあなたがテキストフィールドが空であるかどうかをチェックしたいと思うと仮定します。

テキストフィールドが空白の場合、2つの値のいずれかが割り当てられている可能性があります。それらは@ ""またはnilかもしれません。 したがって、両方をチェックする必要があります。

if ([@"" isEqualToString: textField.text] || !textField.text) { 
     NSLog(@"Text Field is empty"); 
} 
関連する問題