Невозможно вызвать «split» со списком аргументов типа «(String, (String) -> Bool)» в SWIFT 2

Ошибка: невозможно вызвать «разделить» со списком аргументов типа «(String, (String) -> Bool)»

Код, который я хочу использовать: let nameArr = split(name) {$0 == "."}


person Omar Shiltawi    schedule 30.07.2015    source источник
comment
Посмотрите (обновление Swift 2 до) stackoverflow.com/a/25229901/1187415.   -  person Martin R    schedule 30.07.2015


Ответы (1)


Строки больше не являются коллекциями, 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. Действительно мило.

Я надеюсь, что это поможет вам.

person Victor Sigler    schedule 30.07.2015
comment
получаю сообщение об ошибке Инициализатор для условной привязки должен иметь необязательный тип, а не «NSURL» - person Omar Shiltawi; 30.07.2015
comment
Укажите объявление вашей переменной name, см. мой ответ - person Victor Sigler; 30.07.2015
comment
Я действительно новичок в Swift, поэтому не знаю, что делать здесь, это ошибка Image - person Omar Shiltawi; 30.07.2015
comment
Я видел твою ошибку, но в чем проблема? вы больше не можете использовать split таким образом, вам нужно изменить свою строку let nameArr = split(name) {$0 == "."} для любого из вышеперечисленного, которое я вам объяснил. - person Victor Sigler; 30.07.2015
comment
извините за боль, но ни один из них не работал для меня, каждый показывает ошибку по-разному, например, посмотрите на это изображение - person Omar Shiltawi; 30.07.2015
comment
@OmarShiltawi Вы экспериментировали с другой ошибкой, отличной от того, что вы опубликовали, вам нужно сделать это NSURL.fileURLWithPath (путь)! , вы можете узнать больше об этом в этом post - person Victor Sigler; 30.07.2015