basics - xcode swift 4
Iterar a través de un String Swift 2.0 (4)
Estoy tratando de hacer un código muy simple en los parques infantiles de Swift.
var word = "Zebra"
for i in word {
print(i)
}
Sin embargo, siempre recibo un error en la línea 3.
''String'' no tiene un miembro llamado ''Generator''
¿Alguna idea de por qué esto no funciona? Nota: Estoy trabajando en Xcode 7, con Swift 2.0 ( cadenas y caracteres).
Swift 4
Forin loop:
let greeting = "Guten Tag!"
for index in greeting.characters.indices {
print("/(greeting[index]) ", terminator: "")
}
// Prints "G u t e n T a g ! "
ejemplo de mapa :
let word = "Swift 4"
for i in word {
print(i)
}
por cada ejemplo:
let word = "Swift 4"
_ = word.map({ print($0) })
A partir de Swift 2,
String
no se ajusta a
SequenceType
.
Sin embargo, puede usar la propiedad de
characters
en
String
.
characters
devuelven un
String.CharacterView
que se ajusta a
SequenceType
y, por lo tanto, se puede iterar con un bucle
for
:
let word = "Zebra"
for i in word.characters {
print(i)
}
Alternativamente, puede agregar una extensión a
String
para que se ajuste a
SequenceType
:
extension String: SequenceType {}
// Now you can use String in for loop again.
for i in "Zebra" {
print(i)
}
Sin embargo, estoy seguro de que Apple tenía una razón para eliminar la conformidad de
String
con
SequenceType
por lo que la primera opción parece ser la mejor opción.
Sin embargo, es interesante explorar lo que es posible.
String
ya no se ajusta a
SequenceType
.
Sin embargo, puede acceder a la propiedad de caracteres de esta manera:
var word = "Zebra"
for i in word.characters {
print(i)
}
Tenga en cuenta que la documentación aún no se ha actualizado.
Swift 3.0.1
Use la propiedad de
indices
propiedad de
characters
para acceder a todos los
indices
de caracteres individuales en una cadena.
let word = "Swift 4"
word.forEach({ print($0) })