通过String Swift 2.0迭代

Aar*_*ron 45 swift swift-playground xcode7 swift2

我试图在Swift游乐场中做一个非常简单的代码.

var word = "Zebra"

for i in word {
  print(i)
}
Run Code Online (Sandbox Code Playgroud)

但是,我总是在第3行得到错误.

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

关于为什么这不起作用的任何想法?注意:我正在使用Swift 2.0(字符串和字符)在Xcode 7中工作.

ABa*_*ith 78

截至Swift 2,String不符合SequenceType.但是,您可以使用该characters属性String.characters返回一个String.CharacterView符合的东西SequenceType,因此可以通过for循环迭代:

let word = "Zebra"

for i in word.characters {
    print(i)
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以添加扩展名String以使其符合SequenceType:

extension String: SequenceType {}

// Now you can use String in for loop again.
for i in "Zebra" {
    print(i)
}
Run Code Online (Sandbox Code Playgroud)

虽然,我敢肯定,苹果公司有一个理由去除String的一致性SequenceType,因此第一选择似乎是更好的选择.探索可能的东西很有意思.


lch*_*amp 9

String不再符合SequenceType.但是,您可以通过characters这种方式访问它的属性:

var word = "Zebra"

for i in word.characters {
    print(i)
}
Run Code Online (Sandbox Code Playgroud)

请注意,文档尚未更新.