Create NSIndexSet from integer array in Swift

IosSwift2NsarrayNsindexset

Ios Problem Overview


I converted an NSIndexSet to an [Int] array using the answer at https://stackoverflow.com/a/28964059/6481734 I need to do essentially the opposite, turning the same kind of array back into an NSIndexSet.

Ios Solutions


Solution 1 - Ios

#Swift 3

IndexSet can be created directly from an array literal using init(arrayLiteral:), like so:

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

#Original answer (Swift 2.2) Similar to pbasdf's answer, but uses 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)

Solution 2 - Ios

This will be a lot easier in Swift 3:

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

Wow!

Solution 3 - Ios

Swift 3+

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

Added this answer because the fromRange option wasn't mentioned yet.

Solution 4 - Ios

Swift 4.2

From existing array:

let arr = [1, 3, 8]
let indexSet = IndexSet(arr)

From array literal:

let indexSet: IndexSet = [1, 3, 8]

Solution 5 - Ios

You can use a NSMutableIndexSet and its addIndex method:

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)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJacolackView Question on Stackoverflow
Solution 1 - IosAlexanderView Answer on Stackoverflow
Solution 2 - IosmattView Answer on Stackoverflow
Solution 3 - IosArnaudView Answer on Stackoverflow
Solution 4 - IosjposadasView Answer on Stackoverflow
Solution 5 - IospbasdfView Answer on Stackoverflow