Swift 2中的字符串索引

mmg*_*oss 5 xcode swift swift-playground swift2

我决定学习Swift,我决定立即开始使用Swift 2.

所以这是一个非常基本的例子,类似于Apple自己的关于Swift的电子书中的一个例子

let greeting = "Guten Tag"

for index in indices(greeting) {
    print(greeting[index])
}
Run Code Online (Sandbox Code Playgroud)

我在Xcode 7的操场上试过这个,我收到了以下错误

无法使用类型'(String)'的参数列表调用'indices'

我也尝试过与Xcode 6(Swift 1.2 AFAIK)相同的东西,它按预期工作.

现在,我的问题是:

  1. 在Xcode 7中出现错误,它毕竟仍然是测试版,或者?
  2. 使用Swift 2不再有用的东西,电子书还没有完全更新?

另外:如果答案是"2",你将如何替换indices(String)Swift 2?

aya*_*aio 8

在Playground中,如果转到菜单View> Debug Area> Show debug area,您可以在控制台中看到完整错误:

/var/folders/2q/1tmskxd92m94__097w5kgxbr0000gn/T/./lldb/94138/playground29.swift:5:14:错误:'indices'不可用:访问索引(问候语)中索引的集合上的'indices'属性

此外,Strings不再符合SequenceTypes,但您可以通过调用访问它们的元素characters.

所以Swift 2的解决方案就是这样做:

let greeting = "Guten Tag"

for index in greeting.characters.indices {
    print(greeting[index])
}
Run Code Online (Sandbox Code Playgroud)

结果:

ģ
ü

ë
Ñ

T
a
g

当然,我认为你的例子只是为了测试indices,但你可以做到:

for letter in greeting.characters {
    print(letter)
}
Run Code Online (Sandbox Code Playgroud)