2012-05-10 34 views
0

我正在使用代碼來檢查一個單詞是否在我的數組中,如果它是我希望它提交它並且我有它的代碼。如果不是,我希望它彈出一個屏幕。現在這一切都有效,唯一的事情是屏幕彈出2次,因爲我的數組中有2個單詞。這裏是解釋它好一點的代碼。檢查數組中的單詞是否有效

NSArray *searchContacts = [NSArray arrayWithObjects: 
          @"CADEAU", 
          @"KADERZ",nil]; 
NSString *myContact = labelsText.text; 

for (NSString *contact in searchContacts) { 
    if ([contact isEqualToString:myContact]) { 

這是我在這裏說的話,CADEAU & KADERZ在這種情況下。當我將其中的一個單詞放入labelsText.text中時,它確實如我所願。但對於else語句如果text.text字不CADEAU或KADERZ,它彈出窗口的屏幕標籤:

else { 
UIAlertView *alert = [[UIAlertView alloc] 

這個屏幕現在小狗增長2倍,因此我不得不按辭退2倍,我將如何解決這個問題,只需要按一下關閉一次沒有mather數組中有多少單詞?

回答

3

將一個break;顯示您的警報代碼後:

for (NSString *contact in searchContacts) { 
    if ([contact isEqualToString:myContact]) { 
     // do something 
    } else { 
     // show screen 
     break; 
    } 
} 

這將「突破」圈外。

+0

wauw奧凱,這是很容易笑謝謝! – Kevin

+1

堅持下去,你確定這是你想要的嗎?如果你放入KADERZ,它會顯示屏幕並失敗,我不認爲這是你的意圖。如果你真的想這樣做,請參閱下面的馬特的答案。但omz的答案(使用NSSet)可能是最好的。 – abarnert

5

這將是更有效地使用了NSSet,但即使你使用一個NSArray,你可以簡單地調用containsObject:而不是通過自己收集循環。

if (![searchContacts containsObject:myContact]) { 
    //show alert... 
} 
+0

oke有什麼區別?我需要輸入12.5k字,所以我需要擔心的重要事情? – Kevin

+0

如果您只想確定數組中是否存在名稱,那麼這是一個很好的方法。 –

+0

如果真的你想要做的是檢查某個名稱是否在有效名稱列表中,並且該列表的順序不重要,那麼應該使用「NSSet」或「NSMutableSet」而不是「NSArray」。會員測試速度要快得多。 – omz

0

在您的UIAlertView之後使用休息。

例如:

for (NSString *contact in searchContacts) { 
     if ([contact isEqualToString:myContact]) { 
      //do what you want to do  
     } 
     else{ 
      UIAlertView *alert = [[UIAlertView alloc] init]; 
      [alert show]; 
      break; //leave for() 
     } 
    } 

,或者使用:

searchContacts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    if ([contact isEqualToString:myContact]) { 
     //do what you want to do  
    } 
    else{ 
     UIAlertView *alert = [[UIAlertView alloc] init]; 
     [alert show]; 

     *stop = YES; //stop enumeration 
    } 
} 
+0

與接受的答案相同,並且出於同樣的原因也是錯誤的:它只接受searchContacts中的第一個值。 – abarnert

0

我想你想是這樣的:

BOOL contactFound = NO; 
    for (NSString *contact in array) 
    { 
     if ([contact isEqualToString:myContact]) 
     { 
      contactFound = YES; 
      break; 
     } 
    } 

    if (!contactFound) 
     UIAlertView *alert = [[UIAlertView alloc]...