2012-01-27 3 views
0

У меня есть NSArray, и многие значения имеют одинаковые значения (я знаю, что это не лучший способ сделать массив). Как я могу найти строку в массиве и вернуть ей массив индексов. Например, если я хотел найти массив для «DJ Ez», как я могу его получить, чтобы он возвращал все индексы, где индекс равен этой строке? До сих пор я попытался это:Поиск нескольких элементов в NSArray

do { 
    isTheObjectThere = [array containsObject: @"DJ Ez"]; 
    if(isTheObjectThere == true){ 
     indexOfTheObject = [array indexOfObject: @"DJ Ez"]; 
     [arrayOfIndexes addObject:[NSNumber numberWithInt:indexOfTheObject]]; 
     [array removeObjectAtIndex:indexOfTheObject]; 
     NSLog(@"%@", [indexesForAll objectAtIndex:intCtrl]); 
     hasFinished = false; 
    }else{ 
     hasFinished = true; 
    } 
    intCtrl++; 
} while (hasFinished == false); 

Однако это не работает, когда она удаляет элемент это портит все индексы для следующего поиска. Что я делаю?

ответ

1

Как о чем-то вроде этого:

NSIndexSet *indexes = [array indexesOfObjectsPassingTest:^BOOL(NSString *obj, NSUInteger idx, BOOL *stop) { 
    return [obj isEqualToString:@"DJ Ez"]; 
}]; 

Это должно возвращать все соответствия индексов как NSIndexSet, что позволяет вам проверить, если конкретные показатели совпадают, или вы можете получить счетчик и цикл с помощью сравнения индексы, как вы пожелаете.

+0

спасибо, что он сейчас работает. –

Смежные вопросы