Swift 1.2 не может вызывать «count» со списком аргументов типа «(String)».

Обновлен до Xcode 6.3.1 с новым Swift 1.2, старый метод countElement меняется на count, однако, когда я переключаюсь на использование count, он всегда выдает это сообщение об ошибке:

не может вызывать 'count' со списком аргументов типа '(String)'

Этот фрагмент я скопировал из документа Apple, но все еще не работает.

func printAndCount(stringToPrint: String) -> Int {
    println(stringToPrint)
    return count(stringToPrint)
}

func printWithoutCounting(stringToPrint: String) {
    printAndCount(stringToPrint)
}

printAndCount("hello, world")

person goldenlimit    schedule 24.04.2015    source источник
comment
Этот код компилируется и без проблем запускается в моем Xcode 6.3.1.   -  person Martin R    schedule 24.04.2015


Ответы (5)


Попробуйте вызвать глобальную функцию count с префиксом модуля Swift следующим образом:

Swift.count(stringToPoint)

Например. при расширении типа Array также есть свойство с именем count, и поэтому возникает конфликт имен.

person Klaas    schedule 02.06.2015
comment
Я не уверен, что это ошибка, но добавление ко всем моим вызовам «count» префикса модуля Swift действительно решило эту проблему! Отличный совет, Клаас, ты спас мой день! - person iOS-Coder; 26.06.2015

Вы объявили переменную count в той же области видимости? Если это так, вы должны изменить имя переменной. И попробуй построить заново.

person Reo Yoshida    schedule 25.05.2015
comment
Мне кажется ошибка. - person MattD; 01.06.2015
comment
Дох. Это не ошибка, так как переопределение области действия ведет себя так, как ожидалось, но эту ошибку легко сделать, и сообщение об ошибке бесполезно. - person SimplGy; 03.06.2015

У меня была такая же проблема, и это сводило меня с ума.

Для ее решения я использовал:

 myString.characters.count

Бинго.

person Evan K. Stone    schedule 12.10.2015
comment
У меня тоже была такая же проблема, и префикс Swift у меня не работал. Но ваш ответ действительно сработал. Не знаю, как появился этот баг - person Sylvan D Ash; 04.02.2016

Вы пробовали очистить и построить? Это работает здесь.

person Richard Birkett    schedule 24.04.2015
comment
Ну, я создаю новую игровую площадку, и код работает нормально. Я думаю, это потому, что предыдущая версия Swift для игровой площадки испортилась. - person goldenlimit; 25.04.2015
comment
Иногда вам просто нужно перезагрузить его (выходя из Xcode или вырезая и вставляя код). - person Richard Birkett; 30.04.2015

Ну, я создаю новую игровую площадку и копирую код, работает нормально. Я думаю, это потому, что предыдущая версия Swift для игровой площадки испортилась. Создать новый проект работает нормально.

person goldenlimit    schedule 24.04.2015