2015-06-09 68 views
34

刚刚下载的Xcode 7 Beta,并且此错误出现在enumerate关键字上。Swift 2.0:'enumerate'不可用:在序列上调用'enumerate()'方法

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

} 

谁能帮我解决这个问题吗?

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

let stringLength = count(myString) 

在上面一行,编译器说:

'计数' 不可用:访问集合的 '计数' 属性。

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

+0

我也想念编程指南。 –

+0

在Xcode 7.1.1中,错误信息非常具有描述性:'enumerate'不可用:在序列上调用'enumerate()'方法 – arcseldon

回答

105

许多全局函数已被取代协议扩展方法, 夫特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) 

更新斯威夫特3:enumerate()已更名为enumerated()

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

非常好的解释并感谢您的帮助:D – itsji10dra

+5

Swift实际上看起来像一个很好的语言现在! – Sulthan

+0

好动作。你不希望PHP可以开始这样做吗... – Dave

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 
} 

希望这有助于

感谢 凯

5

有使用枚举的斯威夫特2的更新()。

相反的enumerate(...),人们应该使用

... .enumerate()

的原因是,许多全球性的功能已被取代协议扩展的方法和他们会得到一个枚举错误。

希望这会有所帮助。 一切顺利。 n

相关问题