【发布时间】:2010-12-28 16:21:51
【问题描述】:
这感觉像是一个愚蠢的问题,因为在我看来,我的用例一定很常见。
假设我想用一个 NSIndexSet 来表示一组稀疏的索引(这当然是它的用途)。我可以使用-firstIndex 来获得最低的,-lastIndex 来获得最高的,但是在给定它的“索引”的情况下,在中间获得单个任意索引的规范方法是什么?文档让我不清楚。
例如如果我有一个带有索引 { 0, 5, 8, 10, 12, 28 } 的索引,我想说“给我第四个索引”,我希望得到 10(或 12 我想取决于关于我是否算第零个,但我们不要讨论这个,你知道我的意思)。
请注意,我没有对整个索引集进行“枚举”。在给定的时间点,我只想按数字顺序知道集合中的第 n 个索引是什么。
也许我的数据结构是错误的(“set”通常不是为这种有序访问而设计的),但似乎没有 NSIndexArray 可言。
我是否遗漏了一些明显的东西?
谢谢!
【问题讨论】:
-
@Neilvert:我可能最终会这样做,但是当保存索引的数据结构看起来如此方便时,在 NSNumbers 中对整数进行装箱似乎有点过头了! :)
-
集合(包括
NSIndexSet)是无序的(或者至少,它们的顺序是未定义的)。因此,indexAtIndex:没有意义,因为这是假设一个有序集(NSIndexSet不是)。 -
@Dave:总的来说我同意,虽然索引集有点特殊,因为它的内容是在语义上是可排序的——而且 NSIndexSet 公开了
firstIndex和lastIndex,这是对此的让步。 (内部存储范围的实现说明也是如此)。所以我不觉得indexAtIndex:就像我在问一个 NSSet 一样荒谬。
标签: objective-c cocoa nsindexset