NSIndexSet 简介

简介: NSIndexSet (以及它的可修改子类, NSMutableIndexSet) 是一个排好序的,无重复元素的整数集合。它看上去有点像 支持离散整数的 NSRange .它能用于快速查找特定范围的值的索引,也能用于快速计算交集, 同时,Foundation collection class 提供了很多好用的方法,方便你使用 NSIndexSet.

NSIndexSet (以及它的可修改子类, NSMutableIndexSet) 是一个排好序的,无重复元素的整数集合。它看上去有点像 支持离散整数的 NSRange .它能用于快速查找特定范围的值的索引,也能用于快速计算交集, 同时,Foundation collection class 提供了很多好用的方法,方便你使用 NSIndexSet.

image.png

Foundataion framework 里面到处可以看到 NSIndexSet 的影子。 任何从已排序容器(比如 array, 或者 table view 的 data source)里面获取多个元素的方法都会用到 NSIndexSet 做为参数。


如果你仔细看过,你可能会发现你的数据模型可以用NSIndexSet 来表示。比如, AFNetworking 用一个 index set 来代表各个 HTTP 返回码: 用户定义一个 "可接受" 码集合( 默认在 2XX 范围之内的码),放进一个 NSIndexSet, 然后AFNetworking 用 containsIndex: 来检查返回码是否是用户期待的值。


下面还有一些其它关于 index sets 可能的用途:

  • 如果你想提供一套用户选项,里面全部是开关选项,那么你可以考虑用一个 NSIndexSet, 然后把每个打开的开关选项作为一个 enum typedef值放进去。 (不过开关项用bit操作貌似更方便,只是bit操作受整数位数的限制,适合在开关数量很少的情况下使用。--译者)
  • 想做像某宝那样多条件筛选宝贝?你可以深入研究一下 NSPredicate. 另外一种可供参考的 解决方案是为每个条件创建一个 NSIndexSet 实例,该实例包含所有满足该条件的宝贝的索引值。 然后根据用户筛选条件对这些 NSIndexSet 实例取并集或者交集。
    总的来说, NSIndexSet 是一个很实用的类。 它没有其它容器类华丽,但是它有它特定的实用场合。 至少, Foundation 自己用它用的非常多。
相关文章
|
6月前
|
编译器 程序员 C语言
C++系列一: C++简介
C++系列一: C++简介
|
并行计算 API 调度
TOPI 简介
TOPI 简介
177 0
|
网络协议 开发工具 Android开发
AndroidDevTools简介
来源:http://www.androiddevtools.cn/ Android SDK在线更新镜像服务器 中国科学院开源协会镜像站地址: IPV4/IPV6: http://mirrors.
2901 0
|
网络协议 机器人 Java
ROSBridge简介以及理解使用(上)
ROSBridge简介以及理解使用(上)
2649 0
ROSBridge简介以及理解使用(上)
|
存储 数据安全/隐私保护
TrueLicense简介
原文 TrueLicense是一个开源的证书管理引擎,官网 使用场景:当项目交付给客户之后用签名来保证客户不能随意使用项目 默认校验了开始结束时间,可扩展增加mac地址校验等。 其中还有ftp的校验没有尝试,本文详细介绍的是本地校验 license授权机制的原理: 生成密钥对,方法有很多。
8712 0
|
C#
C#中的NameValueCollection简介
NameValueCollection继承自NameObjectCollectionBase,并且和一般的键值对不同的是,它支持集合中出现相同的Key。 引用:using System.Collections.
1764 0
|
数据安全/隐私保护 网络架构 网络协议
|
Java Android开发 C++
|
Web App开发 存储 安全