Friday, June 21, 2013

NSMutableIndexSet removeIndexesInRange example in Objective C (iOS).


NSMutableIndexSet removeIndexesInRange

Removes the indexes in an index range from the receiver.

- (void)removeIndexesInRange:(NSRange)indexRange

Parameters of [NSMutableIndexSet removeIndexesInRange]
indexRange
Index range to remove.

NSMutableIndexSet removeIndexesInRange example.
You may want to look at NSMutableIndexSet. It is designed to efficiently store ranges of numbers.

You can initialize it like this:

NSMutableIndexSet *set = [[NSMutableIndexSet alloc]
    initWithIndexesInRange:NSMakeRange(1, 100000)];
Then you can remove, for example, 123 from it like this:

[set removeIndex:123];
Or you can remove 400 through 409 like this:

[set removeIndexesInRange:NSMakeRange(400, 10)];
You can iterate through all of the remaining indexes in the set like this:

[set enumerateIndexesUsingBlock:^(NSUInteger i, BOOL *stop) {
    NSLog(@"set still includes %lu", (unsigned long)i);
}];
or, more efficiently, like this:

[set enumerateRangesUsingBlock:^(NSRange range, BOOL *stop) {
    NSLog(@"set still includes %lu indexes starting at %lu",
        (unsigned long)range.length, (unsigned long)range.location);
}];

End of NSMutableIndexSet removeIndexesInRange example article.