在NSArray中搜索多个项目
问题描述:
我有一个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);
然而,这并不时,它会删除它打乱了下一个搜索的所有索引项的工作。我该怎么办?
答
怎么是这样的:
NSIndexSet *indexes = [array indexesOfObjectsPassingTest:^BOOL(NSString *obj, NSUInteger idx, BOOL *stop) {
return [obj isEqualToString:@"DJ Ez"];
}];
这应该返回所有的匹配指标作为的NSIndexSet,它允许你做检查,如果具体指标相匹配,或者你可以得到计数和遍历匹配但是你希望的索引。
感谢它现在的作品。 – 2012-01-28 21:02:51