Я преобразовал NSIndexSet в массив [Int], используя ответ в qaru.site/info/152565/... Мне нужно сделать по существу противоположное, превратив такой же массив обратно в NSIndexSet.
Создание NSIndexSet из целочисленного массива в Swift
Ответ 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