Вы пробовали это:
- (NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate
Это дало бы:
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects: @"1", @"2",@"1",@"2",@"1", nil];
NSIndexSet * index = [array indexesOfObjectsPassingTest:^BOOL (id obj, NSUInteger idx, BOOL *stop){
NSString* aString = obj;
return [aString isEqualToString:@"1"];
}];
Лучше всего, вы можете создать категорию NSArray, как эта:
.m файл
@implementation NSArray(Upgraded)
- (NSIndexSet*) indexesMatchingObject:(id)objectToSearch
{
NSIndexSet *index = [self indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
return [obj isEqual:objectToSearch]);
}];
return index;
}
@end
Это можно использовать так:
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects: @"1", @"2",@"1",@"2",@"1", nil];
NSIndexSet* index = [array indexesMatchingObject:@"1"];