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

Swift 2.0 : 'enumerate' is unavailable: call the 'enumerate()' method on the sequence

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

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

}

谁能帮我解决这个问题?

此外,count() 似乎不再适用于计算 String 的长度。

let stringLength = count(myString)

在上面一行,编译器说:

'count' is unavailable: access the 'count' property on the collection.

Apple 是否发布了 Swift 2.0 的任何编程指南?

许多全局函数已被协议扩展方法取代, Swift2的一个新特性,所以enumerate()现在是一个扩展方法 SequenceType:

extension SequenceType {
    func enumerate() -> EnumerateSequence<Self>
}

并用作

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

String不再符合SequenceType,你必须 使用 characters 属性 获取 Unicode 集合 人物。此外,count() 是一种协议扩展方法 CollectionType 而不是全局函数:

let myString = "foo"
let stringLength = myString.characters.count
print(stringLength)

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

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

我知道这是一个旧线程,但我一直在研究 Swift 2.0 和 Playgrounds,我遇到了同样的问题我想我会分享一个使用 enumerate() 的解决方案字符串的方法

// This line works in Swift 1.2
// for (idx, character) in enumerate("A random string, it has a comma.")

// Swift 2.x
let count = inputString.characters

for (idx, character) in count.enumerate() where character == "," {

    // Do something with idx
}

希望对您有所帮助

谢谢 凯

Swift 2 有关于使用 enumerate() 的更新。

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

....enumerate()

原因是很多全局函数被协议扩展方法替代,会出现枚举错误

希望这对您有所帮助。 祝一切顺利。 n