试图访问IndexSet

时间:2017-12-31 05:14:56

标签: swift nsindexset

我正在使用IndexSet而我正在尝试访问某些索引,这些索引有时是连续的,有时则不是。

例如,我的集可能包含[1, 2, 3, 5, 6, 7, 13, 31]

我想从3...13范围中拉出一组范围,但语法有问题。我已经学会了如何使用Apple文档中的函数命令,使用myIndexSet.sorted()。但是,Apple文档没有提供如何访问集合中的一系列元素的示例。用于访问索引集中元素的Apple文档如下:

subscript(Range<IndexSet.Index>)

我已经尝试了很多方法来写这个,但无法弄清楚如何正确地做到这一点。有人可以告诉我如何访问集合中的一系列元素来创建新集合吗?我尝试过这样的事情:

let subset = subscript(Range: myLargerSet.3...13)

但它似乎不起作用。

由于

3 个答案:

答案 0 :(得分:1)

您正在寻找的是<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div>Inspect and check my class</div> IndexSet intersection与另一[1, 2, 3, 5, 6, 7, 13, 31] IndexSet的{​​{3}}:

[3, 4, ..., 12, 13]

答案 1 :(得分:0)

一种可能的解决方案是使用过滤器来创建新的IndexSet

let set = IndexSet(arrayLiteral: 1,2,3,5,6,7,13,31)
let subset = set.filteredIndexSet { (index) -> Bool in
    index >= 3 && index <= 13
}

答案 2 :(得分:0)

您可以按如下方式访问原始集的切片:

let slice = indexSet[indexSet.indexRange(in: 3...13)]

slice访问现有元素,因此创建切片为O(1)