2012-03-24 6 views
0

私は、ボタンの配列をループし、文字列が配列内のボタンのタイトルと等しいかどうかをチェックするメソッドを記述しますが、この方法は、ここでは、配列内のいくつかの文字列に等しい私のコードです:NSMutable配列内のNSStringを比較する際の問題

-(void)checkDuplicatesInSection:(NSString*)btnLabel 
{ 
    for (UIButton* btn in self.test) { 
     if([btnLabel isEqualToString:btn.titleLabel.text]) 
     { 
      NSLog(@"Inside check Dublicates--->Title Existed"); 
     } else { 
      NSLog(@"Inside check Dublicates--->Title Not Existed"); 
     } 
    } 
} 

// self.test---> it's an array contains group of buttons 
// btnLabel----> it's a string passed to that method 

私はプログラムを実行すると、私はInside check Dublicates--->Title Existed"Inside check Dublicates--->Title Not Existedの両方を取得し、なぜ私は理解していないことです。

+0

この質問は混乱します。私は書式を整理しましたが、あなたの問題を再現するか、詳しく説明できますか? –

+0

if([btnLabel isEqualToString:btn.titleLabel.text]) この文は正しく動作しません。ただし、ボタンのタイトルを印刷しても配列は正しく動作しますが、btn.titleLabel.textを削除して定数文字列を入力すると、できます!! –

+0

'self.test'配列をログアウトできますか?ポインタの1つは 'UIButton 'ではないかもしれません。 – Gobot

答えて

2

コード:それはforループであるため

if([btnLabel isEqualToString:btn.titleLabel.text]) 
{ 
    NSLog(@"Inside check Dublicates--->Title Existed"); 
} else { 
    NSLog(@"Inside check Dublicates--->Title Not Existed"); 
} 

は複数回実行されます。そのため、コードを実行するときに両方のログが出力されます。

-(void)checkDuplicatesInSection:(NSString*)btnLabel 
{ 
    BOOL found = NO; 
    for (UIButton* btn in self.test) { 
     if([btnLabel isEqualToString:btn.titleLabel.text]) { 
      found = YES; 
      break; 
     } 
    } 
    if (found) { 
     NSLog(@"Inside check Dublicates--->Title Existed"); 
    } else { 
     NSLog(@"Inside check Dublicates--->Title Not Existed"); 
    } 
} 

それとも、単に方法-containsObject:*使用することができます:

-(void)checkDuplicatesInSection:(NSString*)btnLabel 
{ 
    BOOL found = [self.test containsObject:btn.titleLabel.text]; 

    if (found) { 
     NSLog(@"Inside check Dublicates--->Title Existed"); 
    } else { 
     NSLog(@"Inside check Dublicates--->Title Not Existed"); 
    } 
} 

self.testはあなたにあなたのコードを変更する必要があり、文字列btn.titleLabel.textが含まれているかどうかをテストする

*これはe btn.titleLabel.textNSStringの場合

+0

ありがとうございます、それは動作します –

関連する問題