web-dev-qa-db-ja.com

Swiftの整数配列からNSIndexSetを作成します

NSIndexSetを https://stackoverflow.com/a/28964059/6481734 の答えを使用して[Int]配列に変換しましたNSIndexSet。

55
Jacolack

スイフト3

IndexSet は、次のように init(arrayLiteral:) を使用して、配列リテラルから直接作成できます。

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

元の回答(Swift 2.2)

pbasdf's answer に似ていますが、 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

これはSwift 3で非常に簡単になります:

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

うわー!

69
matt

Swift 3 +

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

fromRangeオプションがまだ言及されていないため、この回答を追加しました。

25
Nycen

Swift 4.2

既存の配列から:

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

配列リテラルから:

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

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)
3
pbasdf