Sto provando a fare un pezzo di codice molto semplice nei campi da gioco Swift.
var word = "Zebra" for i in word { print(i) }
Tuttavia, ottengo sempre un errore sulla linea 3.
‘String’ non ha un membro chiamato ‘Generator’
Qualche idea sul perché questo non funziona? Nota: sto lavorando su Xcode 7, con Swift 2.0 ( Archi e personaggi).
A partire da Swift 2, String
non è conforms a SequenceType
. Tuttavia, è ansible utilizzare la proprietà dei characters
su String
. characters
restituisce un String.CharacterView
conforms a SequenceType
e quindi può essere iterato con un ciclo for
:
let word = "Zebra" for i in word.characters { print(i) }
In alternativa, è ansible aggiungere un’estensione a String
per renderla conforms a SequenceType
:
extension String: SequenceType {} // Now you can use String in for loop again. for i in "Zebra" { print(i) }
Sebbene, sono sicuro che Apple abbia una ragione per rimuovere la conformità di String
a SequenceType
e quindi la prima opzione sembra la scelta migliore. È interessante esplorare ciò che è ansible però.
String
non è più conforms a SequenceType
. Tuttavia è ansible accedere alla proprietà dei characters
in questo modo:
var word = "Zebra" for i in word.characters { print(i) }
Si noti che la documentazione non è stata ancora aggiornata.
Swift 3.0.1
Utilizzare la proprietà indices
proprietà characters
per accedere a tutti gli indices
dei singoli caratteri in una stringa.
let greeting = "Guten Tag!" for index in greeting.characters.indices { print("\(greeting[index]) ", terminator: "") } // Prints "G uten T ag ! "
Ciclo Forin :
let word = "Swift 4" for i in word { print(i) }
esempio di mappa :
let word = "Swift 4" _ = word.map({ print($0) })
per ogni esempio:
let word = "Swift 4" word.forEach({ print($0) })