IOS NSIndexSet

摘要:
NSIndexSet是一组无符号整数。集合中的元素是不可变和不可重复的。它通常用作索引-enumerateIndexesInRange:rangeoptions:optsusingBlock:block如果Rang中指定的范围在要枚举的NSIndexSet中不存在,请跳过。选项参数:enum{NSEnumerationConcurrent=,NSEnumeration Reverse=,};typedefNSUIntegerNSEnumerationOptions;在NSEnumerationConcurrent枚举期间,每个块同时开始执行。这样,枚举的完成顺序是不确定的。NSEnumerationReverse以相反顺序枚举。Example://does二者包括OneBOOLisContainers1=[两个包含索引:一个];BOOLisContains2=[TwocontainsIndex:1];BOOLisContains3=[TwocontainsIndex:9];//二者是否包含指定的NSMakeRangeBOOIsContains4=[TwocontainsIndexesInRange:NSMakeRange(0,5)];inttheCount=[Twocount];//遍历Two,在指定范围内执行Block方法,并使用指定的选项//如果“范围”中指定的范围在“两个”中不存在,则跳过该范围。
记得上一次,用到,关于删除UITableView分组的方法

[tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section]withRowAnimation:UITableViewRowAnimationLeft];


确实,搞不懂NSIndexSet是啥东东!
不懂就看呗!
在这里,整理了一下常用方法。高手绕道!多多指点!

1.NSIndexSet是什么?

NSIndexSet  是个无符号整数集合。集合中的元素不可变的、不可重复。常被用来当作索引使用。就从它字面上理解,就叫做:索引集合。


2.NSIndexSet的一些常用方法。

类方法:


创建一个空的索引集合。

+ (id)indexSet


创建一个索引集合,根据索引值

+ (id)indexSetWithIndex:(NSUInteger)index


创建一个索引集合,根据一个NSRange对象

+ (id)indexSetWithIndexesInRange:(NSRange)indexRange



实例方法:


判断索引集合中是否包含制定的索引值

- (BOOL)containsIndex:(NSUInteger)index


判断索引集合是否包含指定的indexSet

- (BOOL)containsIndexes:(NSIndexSet *)indexSet


判断索引集合是否包含指定的indexRange

- (BOOL)containsIndexesInRange:(NSRange)indexRange


返回索引集合包含的索引数量

- (NSUInteger)count


返回indexRange中包含的索引数量

- (NSUInteger)countOfIndexesInRange:(NSRange)indexRange


枚举NSIndexSet;执行Block操作,在指定的Rang范围内,并使用指定的options方法。

- (void)enumerateIndexesInRange:(NSRange)range options:(NSEnumerationOptions)opts usingBlock:(void (^)(NSUInteger idx, BOOL *stop))block

如果,要枚举的NSIndexSet中不存在Rang中所指定的范围,则跳过。


options参数:

enum {

   NSEnumerationConcurrent = (1UL << 0),

   NSEnumerationReverse = (1UL << 1),

};

typedef NSUInteger NSEnumerationOptions;


NSEnumerationConcurrent

枚举过程中,各个Block是同时开始执行的。这样枚举的完成顺序是不确定的。


NSEnumerationReverse

以反序方式枚举。


例子:


 

// theTwo中是否包含theOne

    BOOL isContains1= [theTwo containsIndexes:theOne];

    BOOL isContains2= [theTwo containsIndex:1];

    BOOL isContains3= [theTwo containsIndex:9];

    // theTwo中是否包含指定的NSMakeRange

    BOOL isContains4= [theTwo containsIndexesInRange:NSMakeRange(0,5)];

    int theCount=[theTwo count];


 

// 遍历theTwo,在指定的Range范围内,执行Block方法,利用制定的options方式

    // 如果,theTwo中不存在Range中所指定的范围,在theTwo中不存在,则跳过。

    [theTwo enumerateIndexesInRange:NSMakeRange(0,8)

                            options:NSEnumerationReverse

                         usingBlock:^(NSUInteger idx, BOOL *stop) {

        

                             NSLog(@"-------%d",idx);

                             NSLog(@"%@",theTwo);

                         }];


其他的方法,都差不多,就不一一介绍了!


希望对你有所帮助!

免责声明:文章转载自《IOS NSIndexSet》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转] 函数调用栈html添加小图标下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQL Server 创建索引(index)

索引的简介: 索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书。 索引主要目的是提高了SQLServer系统的性能,加快数据的查询速度与减少系统的响应时间。 但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。索引建少了,用 WHERE 子句找数据效率低,不利于查找数...

SQL Server索引

SQL Server索引解析 https://www.cnblogs.com/michaeldonghan/p/index001.html 全文章节: 1.聚集索引和非聚集索引 2.索引的结构 3.索引包含列和书签查找 1.聚集索引和非聚集索引 索引分为聚集索引和非聚集索引 1)聚集索引:表的数据是存储在数据页中(数据页的PageType标记为1),Sql...

ElasticSearch性能优化策略【转】

ElasticSearch性能优化主要分为4个方面的优化。 一、服务器部署 二、服务器配置 三、数据结构优化 四、运行期优化 一、服务器部署 1、增加1-2台服务器,用于负载均衡节点 elasticSearch的配置文件中有2个参数:node.master和node.data。这两个参 数搭配使用时,能够帮助提供服务器性能。 1.1> node.ma...

Elasticsearch入门和基本使用

1. 什么是Elasticsearch? Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统;Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。用于快速存储,搜索和海量数据分析; 2. Elasticsearch的优点 1)横向可扩展性:只需要增加一台机器,添加一些配置即可; 2)分片机制提供...

MySQL性能优化总结

一、MySQL的主要适用场景 1、Web网站系统 2、日志记录系统 3、数据仓库系统 4、嵌入式系统 二、MySQL架构图: 三、MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.MYI...

Python学习—数据库篇之索引

一、索引简介 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可,对于索引,会保存在额外的文件中。在mysql数据库中,索引是按照B树的结构来进行存储的。                              30                      ...