我试图在Swift游乐场中做一个非常简单的代码。
var word = "Zebra"
for i in word {
print(i)
}
但是,我总是在第3行收到错误。
'String'没有名为'Generator'的成员
关于为什么这不起作用的任何想法?注意:我使用Swift 2.0(Strings and Characters).
在Xcode 7中工作答案 0 :(得分:78)
自Swift 2起,String
不符合SequenceType
。但是,您可以使用characters
上的String
属性。 characters
返回符合SequenceType
的{{3}},因此可以使用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)
}
虽然,我确信Apple有理由删除String
与SequenceType
的一致性,因此第一个选项似乎是更好的选择。探索可能的事情很有意思。
答案 1 :(得分:9)
String
不再符合SequenceType
。但是,您可以通过以下方式访问它的characters
属性:
var word = "Zebra"
for i in word.characters {
print(i)
}
请注意,文档尚未更新。
答案 2 :(得分:2)
Swift 3.0.1
使用indices
属性的characters
属性访问字符串中所有indices
个字符。
let greeting = "Guten Tag!"
for index in greeting.characters.indices {
print("\(greeting[index]) ", terminator: "")
}
// Prints "G u t e n T a g ! "
答案 3 :(得分:2)
Forin 循环:
let word = "Swift 4"
for i in word {
print(i)
}
地图 示例:
let word = "Swift 4"
_ = word.map({ print($0) })
forEach 示例:
let word = "Swift 4"
word.forEach({ print($0) })