- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这感觉像是一个愚蠢的问题,因为在我看来我的用例一定很常见。
假设我想用 NSIndexSet 表示一组稀疏索引(这当然是它的用途)。我可以使用 -firstIndex
获取最低的索引,使用 -lastIndex
获取最高的索引,但是在中间获取单个任意索引的规范方法是什么,给定它的“指数”?文档让我不清楚。
例如如果我有一个包含索引 { 0, 5, 8, 10, 12, 28 } 的索引集,我想说“给我第四个索引”,我希望得到 10(或者 12,我想这取决于关于我是否计算第零个,但我们不要讨论那个,你知道我的意思)。
请注意,我没有对整个索引集进行“枚举”。在给定的时间点,我只想知道集合中的第 n 个索引是按数字顺序排列的。
也许我的数据结构是错误的(“set”通常不是为这种有序访问而设计的),但似乎没有 NSIndexArray 可言。
我是否漏掉了一些明显的东西?
谢谢!
最佳答案
NSIndexSet
不是为这种访问而设计的。通常,您会像这样枚举集合中的索引:
NSUInteger idx = [theSet indexGreaterThanOrEqualToIndex: 0];
while (idx != NSNotFound) {
// idx equals the next index in the set.
idx = [theSet indexGreaterThanIndex: idx];
}
@Richard 指出这个 for
循环更简单:
for (NSUInteger i = [indexSet firstIndex]; i != NSNotFound; i = [indexSet indexGreaterThanIndex:i]) {
// i equals the next index in the set.
}
从 Mac OS X 10.6/iOS 4.0 开始,NSIndexSet
有一些新的基于 block 的方法,但我还没有审查它们。
修改上面的示例以保持索引的运行计数并在达到集合中的第四个索引时停止应该是微不足道的。 ;)
关于objective-c - NSIndexSet "-indexAtIndex:"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4547484/
这感觉像是一个愚蠢的问题,因为在我看来我的用例一定很常见。 假设我想用 NSIndexSet 表示一组稀疏索引(这当然是它的用途)。我可以使用 -firstIndex 获取最低的索引,使用 -last
我是一名优秀的程序员,十分优秀!