Ich versuche, einen sehr einfachen Code auf Swift Spielplätzen zu schreiben.
var Word = "Zebra"
for i in Word {
print(i)
}
In Zeile 3 erhalte ich jedoch immer eine Fehlermeldung.
'String' hat kein Mitglied namens 'Generator'
Irgendwelche Ideen, warum das nicht funktioniert? Hinweis: Ich arbeite in Xcode 7 mit Swift 2.0 ( Strings and Characters).
Ab Swift 2 entspricht String
nicht SequenceType
. Sie können jedoch die Eigenschaft characters
für String
. characters
gibt ein String.CharacterView
was SequenceType
entspricht und so mit einer for
Schleife durchlaufen werden kann:
let Word = "Zebra"
for i in Word.characters {
print(i)
}
Alternativ können Sie eine Erweiterung zu String
hinzufügen, um sie an SequenceType
anzupassen:
extension String: SequenceType {}
// Now you can use String in for loop again.
for i in "Zebra" {
print(i)
}
Obwohl ich mir sicher bin, dass Apple) einen Grund hatte, die Konformität von String
mit SequenceType
zu entfernen, scheint die erste Option die bessere Wahl zu sein. Es ist interessant zu erkunden was ist aber möglich.
String
stimmt nicht mehr mit SequenceType
überein. Sie können jedoch folgendermaßen auf die Eigenschaft characters
zugreifen:
var Word = "Zebra"
for i in Word.characters {
print(i)
}
Beachten Sie, dass die Dokumentation noch nicht aktualisiert wurde.
Forin loop:
let Word = "Swift 4"
for i in Word {
print(i)
}
map example:
let Word = "Swift 4"
_ = Word.map({ print($0) })
für jedes Beispiel:
let Word = "Swift 4"
Word.forEach({ print($0) })
Swift 3.0.1
Verwenden Sie die Eigenschaft indices
der Eigenschaft characters
, um auf alle indices
einzelnen Zeichen in einer Zeichenfolge zuzugreifen.
let greeting = "Guten Tag!"
for index in greeting.characters.indices {
print("\(greeting[index]) ", terminator: "")
}
// Prints "G u t e n T a g ! "