Подтвердить что ты не робот

Создание NSIndexSet из целочисленного массива в Swift

Я преобразовал NSIndexSet в массив [Int], используя ответ в qaru.site/info/152565/... Мне нужно сделать по существу противоположное, превратив такой же массив обратно в NSIndexSet.

4b9b3361

Ответ 1

Swift 3

IndexSet может быть создан непосредственно из литерала массива с помощью init(arrayLiteral:), так:

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

Оригинальный ответ (Swift 2.2)

Как и pbasdf 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)

Ответ 2

В Swift 3 будет намного проще:

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

Wow!

Ответ 3

Swift 3

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

Добавлен этот ответ, потому что параметр fromRange еще не упоминался.

Ответ 4

Вы можете использовать метод 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)

Ответ 5

Как насчет использования Set<Int>, так как IndexSet является readonly (нет способа добавления новых элементов)?

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