Подтвердить что ты не робот

Swift 2.0: "enumerate" недоступен: вызовите метод "enumerate()" в последовательности

Просто скачан Xcode 7 Beta, и эта ошибка появилась в ключе enumerate.

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

}

Может ли кто-нибудь помочь мне преодолеть это?

Также кажется, что count() больше не работает для подсчета длины String.

let stringLength = count(myString)

В верхней строке компилятор говорит:

'count' недоступен: доступ к свойству count в коллекции.

Apple выпустила какое-либо руководство по программированию для Swift 2.0?

4b9b3361

Ответ 1

Многие глобальные функции были заменены методами расширения протокола, новая функция 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)
}

Ответ 2

Появилось обновление для Swift 2 при использовании enumerate().

Вместо enumerate(...) люди должны использовать

... .enumerate()

Причина в том, что многие глобальные функции были заменены методами расширения протокола, и они получат ошибку перечисления.

Надеюсь, это поможет. Всего наилучшего. п

Ответ 3

Я знаю, что это старый поток, но я просто возился с Swift 2.0 и игровыми площадками, и я столкнулся с той же проблемой, я думал, что я бы разделил решение, которое использует метод 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
}

Надеюсь, что это поможет

Спасибо Kai