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?
Ответы
Ответ 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