在Swift中从整型数组创buildNSIndexSet

我使用https://stackoverflow.com/a/28964059/6481734答案将NSIndexSet转换为[Int]数组,我需要做相反的事情,将相同types的数组转换回NSIndexSet。

Swift 3

可以使用init(arrayLiteral:)从数组字面值直接创buildinit(arrayLiteral:) ,如下所示:

 let indices: IndexSet = [1, 2, 3] 

原文答案(Swift 2.2)

类似于pbasdf的答案 ,但是使用forEach(_:)

 let array = [1,2,3,4,5,7,8,10] let indexSet = NSMutableIndexSet() array.forEach(indexSet.add) //Swift 3 //Swift 2.2: array.forEach{indexSet.addIndex($0)} print(indexSet) 

在Swift 3中这将会更容易:

 let array = [1,2,3,4,5,7,8,10] let indexSet = IndexSet(array) 

哇!

Swift 3

 let fromRange = IndexSet(0...10) let fromArray = IndexSet([1, 2, 3, 5, 8]) 

添加了这个答案,因为fromRange选项还没有提到。

你可以使用NSMutableIndexSet和它的addIndex方法:

 let array : [Int] = [1,2,3,4,5,7,8,10] print(array) let indexSet = NSMutableIndexSet() for index in array { indexSet.addIndex(index) } print(indexSet) 

如何使用Set<Int>因为IndexSet是只读的(没有办法追加新的项目)?

 var set: Set<Int> = [0] set.insert(1) set.insert(2) return set