Swift 2.0:'枚举'不可用:调用序列上的'enumerate()'方法
刚刚下载的Xcode 7testing版,这个错误出现在enumerate
关键字。
for (index, string) in enumerate(mySwiftStringArray) { }
任何人都可以帮我克服这个?
另外,似乎count()
不再用于计算String
长度。
let stringLength = count(myString)
在上面一行,编译器说:
“count”不可用:访问集合上的“count”属性。
苹果是否已经发布了Swift 2.0的编程指南?
许多全局函数已经被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) }
有关使用枚举()的Swift 2的更新。
人们应该使用而不是enumerate(...)
… .enumerate()
原因是许多全局函数被协议扩展方法所取代,并且会得到枚举错误。
希望这可以帮助。 祝一切顺利。 ñ
我知道这是一个古老的线程,但我刚刚搞了Swift 2.0和Playgrounds,我遇到了同样的问题,我想我会分享一个解决scheme,使用enumerate()方法的string
// 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 }
希望这可以帮助
谢谢凯