【发布时间】:2018-11-14 00:55:10
【问题描述】:
NSArray *objects = @[object1, object2, object3, object1, object5, object1, object6, object7];
如何最好地获得由 object1 分隔的范围,如下所示:
(0-2 3-4 5-7)
我知道这种从数组创建 NSIndexSet 的方法,但我不确定如何使用它来实现上述索引集。
NSIndexSet*indexSet = [objects indexesOfObjectsPassingTest:^(id object, NSUInteger idx, BOOL *stop) {
return ; //Do some checks
}];
使用 objects.count 也可能对最终范围有用,但我不确定最好的方法。
【问题讨论】:
-
你的范围不是 0-2、3-4 和 5-7 吗?我不认为
NSIndexSet是你想要的。你想要一个NSRange的数组。您只需要遍历数组,构建范围。 -
对于索引集,(0-2 3-4 5-7)和(0-7)之间没有真正的区别。索引要么在集合中,要么不在集合中。没有“分组”。
-
@Paulw11 你说得对。我已经修复了问题主体并更改了问题以允许其他可能的解决方案。
-
@KaneBuckthorpe 您已经删除了您希望范围由
object1分隔的事实。 -
@KenThomases 实际上有一些分组,因为 rangeAtIndex 可用于 NSIndexSet 以返回 NSIndexSet 索引的范围
标签: ios objective-c nsarray