35

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

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

}

谁能帮我克服这个问题?

此外,似乎count()不再适用于计算String.

let stringLength = count(myString)

在上面一行,编译器说:

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

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

4

3 回答 3

105

许多全局函数已被Swift 2 的新特性协议扩展方法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)
}
于 2015-06-09T11:15:34.013 回答
5

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

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

....enumerate()

原因是许多全局函数已经被协议扩展方法替换,它们会得到一个枚举错误。

希望这可以帮助。一切顺利。n

于 2016-01-06T00:44:42.227 回答
0

我知道这是一个旧线程,但我一直在搞乱 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
}

希望这可以帮助

谢谢凯

于 2015-10-06T13:25:32.837 回答