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