Ваш код выглядит нормально. Его ужасный код, но он отлично работает, // ничего не вызывается ни для какого раздела, и // вызывает что-то секцию для каждого несоответствия в массиве. Я подозреваю, что проблема заключается в том, что вы ожидаете, что // не будет ничего раздела, который будет выполняться один раз, если нет совпадения, и // сделать что-то секцию для выполнения один раз, если есть какое-либо совпадение, что не так. Вы, вероятно, хотите:
-(void) findRedundant: (NSString *) aString {
#define ALPHA_ARRAY [NSArray arrayWithObjects: @"A", @"B", @"C", nil]
BOOL found = NO;
NSUInteger f;
for (f = 0; f < [ALPHA_ARRAY count]; f++) {
NSString * stringFromArray = [ALPHA_ARRAY objectAtIndex:f];
if ([aString isEqualToString:stringFromArray]) {
found = YES;
break;
}
}
if (found) {
// do found
} else {
// do not found
}
}
Кроме того, вы явно не понимаете, макросов и когда вы должны и не должны использовать их (как правило, вы никогда не должны использовать их, с очень немногими исключениями). Макрос в текстовом выражении заменен на ваш код. Это означает, что происходит создание и инициализация массива каждый раз, когда вы используете ALPHA_ARRAY. Это ужасно.
В принципе, никогда не используйте #define снова (кроме констант), пока у вас не будет гораздо более глубокое понимание того, что вы делаете. В этом случае, вы можете создать массив, как описано taebot:
NSArray* alphaArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
Далее, если вы разрабатываете для современной платформы (10.5 или iPhone), вы можете использовать Fast Enumeration, который намного проще и понятнее читать:
-(void) findRedundant: (NSString *) aString {
NSArray* alphaArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
BOOL found = NO;
for (NSString* stringFromArray in alphaArray) {
if ([aString isEqualToString:stringFromArray]) {
found = YES;
break;
}
}
if (found) {
// do found
} else {
// do not found
}
}
и, наконец, вы должны пойти прочитать документацию по NSArray и NSString, чтобы увидеть, что вы можете сделать бесплатно, а затем вы найдете такие методы, как containsObject что KiwiBastard указывал, и вы можете переписать процедуру as:
-(void) findRedundant: (NSString *) aString {
NSArray* alphaArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
if ([alphaArray containsObject: aString]) {
// do found
} else {
// do not found
}
}
Не могли бы вы добавить, почему это не работает на вопрос? –