我有一个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);
然而,这不起作用,因为当它删除项目时,它会扰乱下一次搜索的所有索引。我该怎么办?
答案 0 :(得分:1)
这样的事情怎么样:
NSIndexSet *indexes = [array indexesOfObjectsPassingTest:^BOOL(NSString *obj, NSUInteger idx, BOOL *stop) {
return [obj isEqualToString:@"DJ Ez"];
}];
这应该将所有匹配的索引作为NSIndexSet返回,这允许您检查特定索引是否匹配,或者您可以获得计数并循环遍历匹配的索引,无论您希望如何。