Не може да се извика „split“ със списък с аргументи от тип „(String, (String) -› Bool)“ в SWIFT 2

Грешката: Не може да се извика „split“ със списък с аргументи от тип „(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, така че не знам какво да правя тук е грешката Изображение - 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(path)! , можете да прочетете повече за това в тази публикация - person Victor Sigler; 30.07.2015