在NSArray中搜索多个项目

时间:2012-01-27 16:20:41

标签: xcode search nsarray

我有一个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 个答案:

答案 0 :(得分:1)

这样的事情怎么样:

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

这应该将所有匹配的索引作为NSIndexSet返回,这允许您检查特定索引是否匹配,或者您可以获得计数并循环遍历匹配的索引,无论您希望如何。