65 votes

Créer NSIndexSet de tableau d'entiers en Swift

J'ai converti un NSIndexSet à une [Int] tableau à l'aide de la réponse à https://stackoverflow.com/a/28964059/6481734 j'ai besoin de faire le contraire, en tournant le même type de tableau dans un NSIndexSet.

108voto

XAleXOwnZX Points 159

Swift 3

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

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

Origine de la réponse (Swift 2.2)

Semblable à pbasdf réponse, 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)

76voto

matt Points 60113

Ce sera beaucoup plus facile à Swift 3:

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

Wow!

27voto

user229688 Points 1393

Swift 3+

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

Ajouté cette réponse parce que l' fromRange option n'est pas encore mentionné.

3voto

pbasdf Points 16551

Vous pouvez utiliser un NSMutableIndexSet et son addIndex méthode:

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)

0voto

bubuxu Points 1687

Comment utiliser Set<Int> depuis IndexSet est en lecture seule (pas de manière à ajouter de nouveaux éléments)?

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X