J'essaie de faire un morceau de code très simple dans les terrains de jeux Swift.
var Word = "Zebra"
for i in Word {
print(i)
}
Cependant, je reçois toujours une erreur sur la ligne 3.
'String' n'a pas de membre nommé 'Generator'
Des idées sur pourquoi cela ne fonctionne pas? Remarque: je travaille dans Xcode 7, avec Swift 2.0 ( Chaînes et caractères).
À partir de Swift 2, String
n'est pas conforme à SequenceType
. Cependant, vous pouvez utiliser la propriété characters
sur String
. characters
renvoie un String.CharacterView
qui est conforme à SequenceType
et peut donc être itéré via une boucle for
:
let Word = "Zebra"
for i in Word.characters {
print(i)
}
Vous pouvez également ajouter une extension à String
pour la rendre conforme à SequenceType
:
extension String: SequenceType {}
// Now you can use String in for loop again.
for i in "Zebra" {
print(i)
}
Cependant, je suis sûr que Apple avait une raison pour supprimer la conformité de String
à SequenceType
et donc la première option semble être le meilleur choix. Il est intéressant d'explorer ce qui est possible cependant.
String
n'est plus conforme à SequenceType
. Cependant, vous pouvez accéder à la propriété characters
de cette façon:
var Word = "Zebra"
for i in Word.characters {
print(i)
}
Notez que la documentation n'a pas encore été mise à jour.
( Forin boucle:
let Word = "Swift 4"
for i in Word {
print(i)
}
map exemple:
let Word = "Swift 4"
_ = Word.map({ print($0) })
forEach exemple:
let Word = "Swift 4"
Word.forEach({ print($0) })
Swift 3.0.1
Utilisez la propriété indices
de la propriété characters
pour accéder à tous les indices
des caractères individuels d'une chaîne.
let greeting = "Guten Tag!"
for index in greeting.characters.indices {
print("\(greeting[index]) ", terminator: "")
}
// Prints "G u t e n T a g ! "