2012-03-24 118 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

這個問題很混亂。我清理了格式,但是能否重述或闡述您的問題? – 2012-03-24 19:37:40

+0

if([btnLabel isEqualToString:btn.titleLabel.text]) 該語句不起作用,雖然我打印按鈕標題和數組工作正常,當我刪除btn.titleLabel.text並把一個常量字符串,有用!! – 2012-03-24 19:42:24

+0

你可以註銷你的'self.test'數組嗎?其中一個指針可能不是'UIButton'。 – Gobot 2012-03-24 19:50:24

回答

2

的代碼:

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

將被執行多次,因爲它是在一個for循環。這就是爲什麼當你運行你的代碼時你會同時打印這兩個日誌。

爲了測試是否self.test包含btn.titleLabel.text你應該修改你的代碼串:

-(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"); 
    } 
} 

*這將工作e如果btn.titleLabel.textNSString

+0

謝謝,它的工作原理 – 2012-03-24 19:58:57