I converted an NSIndexSet to an [Int] array using the answer at https://mcmap.net/q/297273/-how-to-get-indexes-from-nsindexset-into-an-nsarray-in-cocoa I need to do essentially the opposite, turning the same kind of array back into an NSIndexSet.
Create NSIndexSet from integer array in Swift
Asked Answered
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)
Thanks, but if I use to reloadTableSection is it work to one section? –
Disforest
@BrunoFernandes Uh... What? –
Cesta
This will be a lot easier in Swift 3:
let array = [1,2,3,4,5,7,8,10]
let indexSet = IndexSet(array)
Wow!
Even better, it can be assigned from an Integer Literal. See my answer –
Cesta
@AlexanderMomchliov Excellent, that is even better. –
Unnecessary
It is very annoying this can't be seen by typing IndexSet.init and using an autocomplete option. –
Intelligence
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.
Swift 4.2
From existing array:
let arr = [1, 3, 8]
let indexSet = IndexSet(arr)
From array literal:
let indexSet: IndexSet = [1, 3, 8]
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)
© 2022 - 2024 — McMap. All rights reserved.