2015-06-09 4 views
34

Gerade heruntergeladen Xcode 7 Beta, und dieser Fehler erschien auf enumerate Schlüsselwort.Swift 2.0: 'Enumerate' ist nicht verfügbar: Rufen Sie die 'enumerate()' Methode auf die Sequenz

for (index, string) in enumerate(mySwiftStringArray) 
{ 

} 

Kann helfen jemand mir dies zu überwinden?

Scheint auch wie count() funktioniert nicht mehr für die Zählung Länge von String.

let stringLength = count(myString) 

auf dem oberen Linie, Compiler sagt:

'count' steht nicht zur Verfügung: Zugriff auf das 'count' Eigentum an der Sammlung.

Hat Apple eine Programmieranleitung für Swift 2.0 veröffentlicht?

+0

Ich vermisse auch eine Programmieranleitung. –

+0

In Xcode 7.1.1 ist die Fehlermeldung ziemlich deskriptiv: 'Enumerate' ist nicht verfügbar: Rufen Sie die 'enumerate()' Methode auf die Sequenz – arcseldon

Antwort

105

Viele globale Funktionen durch Protokollerweiterung Methoden ersetzt wurden, eine neue Funktion von Swift 2, so enumerate() ist jetzt eine Erweiterung Methode für SequenceType:

extension SequenceType { 
    func enumerate() -> EnumerateSequence<Self> 
} 

und als

let mySwiftStringArray = [ "foo", "bar" ] 
for (index, string) in mySwiftStringArray.enumerate() { 
    print(string) 
} 

Und String entspricht nicht mehr SequenceType, Sie müssen Verwenden Sie die characters-Eigenschaft, um die Unicode-Zeichensätze zu erhalten. Auch ist count() eine Protokollerweiterung Methode CollectionType statt einer globalen Funktion:

let myString = "foo" 
let stringLength = myString.characters.count 
print(stringLength) 

Update für Swift 3:enumerate() hat enumerated() umbenannt:

let mySwiftStringArray = [ "foo", "bar" ] 
for (index, string) in mySwiftStringArray.enumerated() { 
    print(string) 
} 
+1

Sehr gut erklärt und danke für Hilfe: D – itsji10dra

+5

Swift sieht eigentlich wie eine nette Sprache aus jetzt! – Sulthan

+0

Guter Zug. Willst du nicht, dass PHP damit anfangen kann? – Dave

0

Ich weiß, das ist ein alter Thread, aber ich habe gerade mit Swift 2.0 und Playgrounds herumgespielt und ich stieß auf das gleiche Problem Ich dachte, ich würde eine Lösung teilen, die die enumerate() -Methode für einen String

verwendet
// This line works in Swift 1.2 
// for (idx, character) in enumerate("A random string, it has a comma.") 

// Swift 2.x 
let count = inputString.characters 

for (idx, character) in count.enumerate() where character == "," { 

    // Do something with idx 
} 

this helps

Dank Kai

5

Es gab ein Update für Swift 2 auf aufzuzählen() verwenden.

Statt enumerate(...) sollten die Menschen

verwenden

... .enumerate()

Der Grund dafür ist, dass viele globale Funktionen durch Protokollerweiterung Methoden ersetzt worden, und sie werden ein enumerate Fehler.

Hoffe, das hilft. Alles Gute. n