Scorrere attraverso una stringa Swift 2.0

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 ! " 

visita https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html

Swift 4

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) })