2012-01-27 70 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

感谢它现在的作品。 – 2012-01-28 21:02:51