NSIndexSet是排好序的,无重复的无符号整形集合.系统库中用的非常的多。例如
//NSArray中
- (NSArray *)objectsAtIndexes:(NSIndexSet *)indexes;
- (void)enumerateObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts usingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block;
- (NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate;<pre name="code" class="objc">......
//UITableView中
- (void)insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
- (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
初始化方法
+ (instancetype)indexSet; //建立空的set
+ (instancetype)indexSetWithIndex:(NSUInteger)value; //用某个整数建立set
+ (instancetype)indexSetWithIndexesInRange:(NSRange)range; //用一个Range建立一个set
- (instancetype)initWithIndexesInRange:(NSRange)range;
- (instancetype)initWithIndexSet:(NSIndexSet *)indexSet;<pre name="code" class="objc">- (instancetype)initWithIndex:(NSUInteger)value;
获取值,如果没有返回NSNotFound
@property (readonly) NSUInteger firstIndex;
@property (readonly) NSUInteger lastIndex;<pre name="code" class="objc">- (NSUInteger)indexGreaterThanIndex:(NSUInteger)value;
- (NSUInteger)indexLessThanIndex:(NSUInteger)value;
- (NSUInteger)indexGreaterThanOrEqualToIndex:(NSUInteger)value;
- (NSUInteger)indexLessThanOrEqualToIndex:(NSUInteger)value;
判断是否存在值
- (BOOL)containsIndex:(NSUInteger)value;
- (BOOL)containsIndexesInRange:(NSRange)range;
- (BOOL)containsIndexes:(NSIndexSet *)indexSet;
遍历
- (void)enumerateIndexesUsingBlock:(void (^)(NSUInteger idx, BOOL *stop))block;<pre name="code" class="objc">- (NSUInteger)indexPassingTest:(BOOL (^)(NSUInteger idx, BOOL *stop))predicate
可变的对象 NSMutableIndexSet
- (void)addIndexes:(NSIndexSet *)indexSet;
- (void)removeIndexes:(NSIndexSet *)indexSet;
- (void)removeAllIndexes;
- (void)addIndex:(NSUInteger)value;
- (void)removeIndex:(NSUInteger)value;
- (void)addIndexesInRange:(NSRange)range;
- (void)removeIndexesInRange:(NSRange)range;