检查word是否在数组中有效

时间:2012-05-10 21:56:44

标签: iphone objective-c ios xcode

我正在使用代码检查一个单词是否在我的数组中,如果是,我希望它提交它并且我有代码。如果不是我想让它弹出一个屏幕。现在一切正常,唯一的就是屏幕弹出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次解除,我怎么解决这个问题只需按一下就可以解除数字中没有多少字?

4 个答案:

答案 0 :(得分:5)

使用NSSet会更有效,但即使您使用NSArray,也可以简单地调用containsObject:而不是自行循环收集。

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

答案 1 :(得分:3)

在显示提醒的代码后面加break;

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

这将“打破”循环。

答案 2 :(得分: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
    }
}

答案 3 :(得分:0)

我想你想要这样的东西:

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

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