我正在尝试在 Swift 游乐场中编写一段非常简单的代码。
var word = "Zebra"
for i in word {
print(i)
}
但是,我总是在第 3 行得到一个错误。
“字符串”没有名为“生成器”的成员
关于为什么这不起作用的任何想法?注意:我在 Xcode 7 中工作,使用 Swift 2.0(字符串和字符)。
我正在尝试在 Swift 游乐场中编写一段非常简单的代码。
var word = "Zebra"
for i in word {
print(i)
}
但是,我总是在第 3 行得到一个错误。
“字符串”没有名为“生成器”的成员
关于为什么这不起作用的任何想法?注意:我在 Xcode 7 中工作,使用 Swift 2.0(字符串和字符)。
从 Swift 2 开始,String
不符合SequenceType
. 但是,您可以在characters
上使用该属性String
。characters
返回String.CharacterView
符合的 a ,SequenceType
因此可以通过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
,因此第一个选项似乎是更好的选择。探索什么是可能的很有趣。
String
不再符合SequenceType
。但是,您可以通过characters
以下方式访问它的属性:
var word = "Zebra"
for i in word.characters {
print(i)
}
请注意,文档尚未更新。
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) })
斯威夫特 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 ! "