Ошибка: невозможно вызвать «разделить» со списком аргументов типа «(String, (String) -> Bool)»
Код, который я хочу использовать: let nameArr = split(name) {$0 == "."}
Ошибка: невозможно вызвать «разделить» со списком аргументов типа «(String, (String) -> Bool)»
Код, который я хочу использовать: let nameArr = split(name) {$0 == "."}
Строки больше не являются коллекциями, String
больше не соответствует CollectionType
. Вы можете использовать другие альтернативы, такие как функция componentsSeparatedByString
:
var name = "Victor.Hello.GYTT"
let nameArr = name.componentsSeparatedByString(".") // [Victor, Hello, GYTT]
Другой вариант — использовать свойство characters
:
let nameArr = split(name.characters) { $0 == "." }.map { String($0) }
С новым синтаксисом .init
в Xcode 7 beta 2, где init
«теперь можно ссылаться как на статические методы», например, следующим образом:
let nameArr = split(name.characters) { $0 == "." }.map { String.init }
Или сделать String
тоже соответствующим протоколу, но Apple приняла решение удалить String
соответствие Sliceable
, будьте осторожны.
Вы можете узнать больше о заметных изменениях в Изменения в стандартной библиотеке Swift в бета-версии 2.0 1 в блоге @AirSpeedVelocity. Действительно мило.
Я надеюсь, что это поможет вам.
name
, см. мой ответ
- person Victor Sigler; 30.07.2015
split
таким образом, вам нужно изменить свою строку let nameArr = split(name) {$0 == "."}
для любого из вышеперечисленного, которое я вам объяснил.
- person Victor Sigler; 30.07.2015