Создать NSIndexSet из целочисленного массива в Swift
Я преобразовал NSIndexSet в массив [Int], используя ответ по адресу /questions/24689821/kak-poluchit-indeksyi-iz-nsindexset-v-nsarray-v-kakao/24689850#24689850 Мне нужно сделать по существу обратное, превратив тот же тип массива обратно в NSIndexSet.
5 ответов
Свифт 3
IndexSet
может быть создан непосредственно из литерала массива, используя init(arrayLiteral:)
, вот так:
let indices: IndexSet = [1, 2, 3]
Оригинальный ответ (Swift 2.2)
Похоже на ответ pbasdf, но использует 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)
Это будет намного проще в Swift 3:
let array = [1,2,3,4,5,7,8,10]
let indexSet = IndexSet(array)
Вот Это Да!
Свифт 3+
let fromRange = IndexSet(0...10)
let fromArray = IndexSet([1, 2, 3, 5, 8])
Добавил этот ответ, потому что fromRange
Вариант еще не был упомянут.
Swift 4.2
Из существующего массива:
let arr = [1, 3, 8]
let indexSet = IndexSet(arr)
Из литерала массива:
let indexSet: IndexSet = [1, 3, 8]
Вы можете использовать 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)
Как насчет использования Set<Int>
поскольку IndexSet
только для чтения (нет возможности добавлять новые элементы)?
var set: Set<Int> = [0]
set.insert(1)
set.insert(2)
return set