2016-06-22 8 views
39

में पूर्णांक सरणी से एनएसआईएंडएक्ससेट बनाएं, मैंने https://stackoverflow.com/a/28964059/6481734 पर उत्तर का उपयोग करके एक एनआईएसएनएक्सएक्ससेट को [int] सरणी में परिवर्तित किया है, मुझे अनिवार्य रूप से विपरीत करने की आवश्यकता है, उसी प्रकार की सरणी को एनएसआईएनएक्सएक्ससेट में बदलना है।स्विफ्ट

उत्तर

74

स्विफ्ट 3

IndexSet शाब्दिक शृंखला init(arrayLiteral:) का उपयोग कर, तो तरह से सीधे बनाया जा सकता है:

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

मूल उत्तर (स्विफ्ट 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) 
+0

धन्यवाद, लेकिन अगर मैं पुनः लोड करने के लिए उपयोग करता हूंटेबलसेक्शन यह एक सेक्शन में काम करता है? – Bruno

+1

@ ब्रूनो फर्नांडीस उह ... क्या? – Alexander

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

यह स्विफ्ट 3 में एक बहुत आसान हो जाएगा:

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

वाह!

+0

अच्छा लगता है, इंतजार नहीं कर सकता! – Alexander

+0

इससे भी बेहतर, इसे एक इंटीजर लिटल से असाइन किया जा सकता है। मेरा उत्तर – Alexander

+0

@AlexanderMomchliov उत्कृष्ट देखें, कि _is_ भी बेहतर है। – matt

-1

Set<Int> का उपयोग कैसे करें IndexSet पढ़ा गया है (नई वस्तुओं को जोड़ने का कोई तरीका नहीं है)?

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

इंडेक्ससेट - केवल पढ़ने योग्य नहीं है (अपरिवर्तनीय), यह घोषणा या var के रूप में घोषणा पर निर्भर करता है। NSIndexSet से भ्रमित न करें। – vsilux

11

स्विफ्ट 3

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

जोड़ा इस जवाब क्योंकि fromRange विकल्प अभी तक का उल्लेख नहीं किया गया था।