2015-06-09 15 views
34

Chỉ cần tải xuống Xcode 7 Beta và lỗi này xuất hiện trên từ khóa enumerate.Swift 2.0: 'liệt kê' không khả dụng: hãy gọi phương thức 'liệt kê()' trên trình tự

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

} 

Có ai giúp tôi khắc phục điều này không?

Ngoài ra, có vẻ như count() không còn hoạt động để đếm chiều dài String.

let stringLength = count(myString) 

On line trên, trình biên dịch nói:

'đếm' không có sẵn: truy cập vào 'đếm' tài sản trên bộ sưu tập.

Apple đã phát hành bất kỳ hướng dẫn lập trình nào cho Swift 2.0 chưa?

+0

Tôi cũng bỏ lỡ hướng dẫn lập trình. –

+0

Trong Xcode 7.1.1 thông báo lỗi là khá mô tả: 'liệt kê' là không có sẵn: gọi phương pháp 'liệt kê()' trên dãy – arcseldon

Trả lời

105

Nhiều chức năng toàn cầu đã được thay thế bởi phương pháp khuyến nông protocol, một tính năng mới của Swift 2, do enumerate() hiện nay là một phương pháp khuyến nông cho SequenceType:

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

và sử dụng như

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

String không còn tuân theo SequenceType, bạn phải sử dụng thuộc tính characters để nhận bộ sưu tập Unicode ký tự. Ngoài ra, count() là một phương pháp mở rộng giao thức của CollectionType thay vì một chức năng toàn cầu:

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

Cập nhật cho Swift 3:enumerate() đã được đổi tên thành enumerated():

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

Rất tốt giải thích và cảm ơn bạn đã giúp đỡ: D – itsji10dra

+5

Swift thực sự trông giống như một ngôn ngữ tốt đẹp hiện nay! – Sulthan

+0

Động thái tốt. Bạn không muốn PHP có thể bắt đầu làm điều này ... – Dave

0

Tôi biết đây là một thread cũ nhưng tôi đã chỉ rối tung xung quanh với Swift 2.0 và Playgrounds và tôi đã gặp vấn đề tương tự, tôi nghĩ rằng tôi muốn chia sẻ một giải pháp sử dụng phương thức liệt kê() cho một 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 
} 

Hope this helps

Cảm ơn Kai

5

Có một bản cập nhật cho Swift 2 về việc sử dụng liệt kê().

Thay vì enumerate(...), mọi người nên sử dụng

... .enumerate()

Lý do là nhiều chức năng toàn cầu đã được thay thế bằng các phương pháp mở rộng giao thức và họ sẽ nhận được một lỗi enumerate.

Hy vọng điều này sẽ hữu ích. Tất cả tốt nhất. n