web-dev-qa-db-fra.com

Créer NSIndexSet à partir d’un tableau entier dans Swift

J'ai converti un NSIndexSet en un tableau [Int] en utilisant la réponse à https://stackoverflow.com/a/28964059/6481734 Je dois le faire essentiellement au contraire, reconvertir le même type de tableau en un NSIndexSet.

55
Jacolack

Swift 3

IndexSet peut être créé directement à partir d'un littéral de tableau à l'aide de init(arrayLiteral:) , comme suit:

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

Réponse originale (Swift 2.2)

Similaire à réponse de pbasdf , mais utilise 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)
94
Alexander

Ce sera beaucoup plus facile dans Swift 3:

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

Hou la la!

69
matt

Swift 3 +

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

Ajout de cette réponse car l'option fromRange n'a pas encore été mentionnée.

25
Nycen

Swift 4.2

De tableau existant:

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

Du tableau littéral:

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

Vous pouvez utiliser NSMutableIndexSet et sa méthode 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)
3
pbasdf