通过String Swift 2.0迭代

我想在Swift游乐场里做一个非常简单的代码。

var word = "Zebra" for i in word { print(i) } 

但是,我总是在第3行发生错误。

'String'没有名为'Generator'的成员

任何想法,为什么这是行不通的? 注意:我在Xcode 7中使用Swift 2.0( string和字符)。

从Swift 2开始, String不符合SequenceType 。 但是,您可以使用String上的characters属性。 characters返回一个符合SequenceTypeString.CharacterView ,所以可以用for循环迭代:

 let word = "Zebra" for i in word.characters { print(i) } 

或者,你可以添加一个扩展到String ,使其符合SequenceType

 extension String: SequenceType {} // Now you can use String in for loop again. for i in "Zebra" { print(i) } 

虽然,我确信苹果有理由去除String符合SequenceType ,所以第一个选项似乎是更好的select。 探索什么是可能的,但是很有趣。

String不再符合SequenceType 。 但是你可以这样访问它的characters属性:

 var word = "Zebra" for i in word.characters { print(i) } 

请注意,文档尚未更新。

Swift 3.0.1

使用characters属性的indices属性可以访问string中所有单个字符的indices

 let greeting = "Guten Tag!" for index in greeting.characters.indices { print("\(greeting[index]) ", terminator: "") } // Prints "G uten T ag ! " 

请访问https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html

斯威夫特4

Forin循环:

 let word = "Swift 4" for i in word { print(i) } 

地图示例:

 let word = "Swift 4" _ = word.map({ print($0) }) 

例如:

 let word = "Swift 4" word.forEach({ print($0) })