gpt4 book ai didi

objective-c - NSIndexSet "-indexAtIndex:"?

转载 作者:太空狗 更新时间:2023-10-30 03:18:08 26 4
gpt4 key购买 nike

这感觉像是一个愚蠢的问题,因为在我看来我的用例一定很常见。

假设我想用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com