Поиск нескольких элементов в NSArray - PullRequest
0 голосов
/ 27 января 2012

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

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 Ответ

1 голос
/ 27 января 2012

Как насчет этого:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...