Swift

2016-06-22 7 views

cevap

74

Swift 3

IndexSet şöyle init(arrayLiteral:) kullanılarak değişmez bir diziden, doğrudan oluşturulabilir:

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

Orjinal cevap (Hızlı 2.2)

pbasdf's answer benzer

ancak 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) 
+0

Teşekkürler, ancak yeniden yüklemek için kullanıyorumTableSection bir bölüm için çalışıyor mu? – Bruno

+1

@BrunoFernandes Uh ... Ne? – Alexander

2

Sen kullanabileceğiniz bir NSMutableIndexSet ve addIndex yöntemi:

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

Bu Swift 3'te çok daha kolay olacaktır kullanır:

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

Vay!

+0

İyi görünüyor, bekleyemem! – Alexander

+0

Daha da iyisi, bir Tamsayı Literal'dan atanabilir. Cevabımı gör – Alexander

+0

@AlexanderMomchliov Mükemmel, bu _is_ daha da iyi. – matt

-1

IndexSet 'den beri Set<Int> kullanımı nasıldır (yeni öğeleri eklemenin bir yolu yoktur)?

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

IndexSet - readonly (immutable) değil, dec veya var olan deklarasyona bağlıdır. NSIndexSet ile karıştırmayın. – vsilux

11

Swift 3

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

Eklendi fromRange seçeneği henüz belirtilmeyen çünkü bu cevap.