Я преобразовал NSIndexSet в массив [Int], используя ответ на https://stackoverflow.com/a/28964059/6481734 Мне нужно сделать по существу противоположное, превратив такой же массив в NSIndexSet.Создайте NSIndexSet из целочисленного массива в Swift
39
A
ответ
74
Swift 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)
2
Вы можете использовать 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)
45
-1
Как насчет использования Set<Int>
с IndexSet
is readonly (без возможности добавления новых элементов)?
var set: Set<Int> = [0]
set.insert(1)
set.insert(2)
return set
+0
IndexSet - не является readonly (неизменным), это зависит от объявления как let или var. Не путайте с NSIndexSet. – vsilux
11
Swift 3
let fromRange = IndexSet(0...10)
let fromArray = IndexSet([1, 2, 3, 5, 8])
Добавлен этот ответ, потому что вариант fromRange
еще не было упомянуто.
Спасибо, но если я использую reloadTableSection, это работает в одном разделе? – Bruno
@BrunoFernandes Uh ... Что? – Alexander