Swift 2.0:'enumerate'不可用:在序列上调用'enumerate()'方法

its*_*dra 34 swift swift2

刚刚下载了Xcode 7 Beta,enumerate关键字出现了这个错误.

for (index, string) in enumerate(mySwiftStringArray)
{

}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我克服这个吗?

而且,似乎count()不再适用于计算长度String.

let stringLength = count(myString)
Run Code Online (Sandbox Code Playgroud)

在上面一行,编译器说:

'count'不可用:访问集合上的'count'属性.

Apple已经发布了Swift 2.0的任何编程指南吗?

Mar*_*n R 105

许多全局函数已被协议扩展方法取代,这是Swift 2的一个新特性,因此enumerate()现在是一种扩展方法SequenceType:

extension SequenceType {
    func enumerate() -> EnumerateSequence<Self>
}
Run Code Online (Sandbox Code Playgroud)

并用作

let mySwiftStringArray = [ "foo", "bar" ]
for (index, string) in mySwiftStringArray.enumerate() {
   print(string) 
}
Run Code Online (Sandbox Code Playgroud)

并且String不再符合SequenceType,您必须使用该characters属性来获取Unicode字符的集合.此外,count()是一种协议扩展方法, CollectionType而不是全局函数:

let myString = "foo"
let stringLength = myString.characters.count
print(stringLength)
Run Code Online (Sandbox Code Playgroud)

Swift 3的更新: enumerate()已重命名为enumerated():

let mySwiftStringArray = [ "foo", "bar" ]
for (index, string) in mySwiftStringArray.enumerated() {
    print(string)
}
Run Code Online (Sandbox Code Playgroud)

  • Swift实际上看起来就像一个很好的语言! (5认同)

小智 5

使用enumerate()时,Swift 2有了更新.

enumerate(...)人们应该使用而不是

... .enumerate()

原因是许多全局函数已被协议扩展方法取代,它们将获得枚举错误.

希望这可以帮助.祝一切顺利.ñ