【发布时间】:2015-07-30 14:56:33
【问题描述】:
错误:无法使用类型为“(String, (String) -> Bool)”的参数列表调用“split”
我想使用的代码:let nameArr = split(name) {$0 == "."}
【问题讨论】:
-
看看(Swift 2 更新到)*.com/a/25229901/1187415。
错误:无法使用类型为“(String, (String) -> Bool)”的参数列表调用“split”
我想使用的代码: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) }
使用 Xcode 7 beta 2 中的新 .init 语法,其中 init“现在可以像静态方法一样被引用”,如下所示:
let nameArr = split(name.characters) { $0 == "." }.map { String.init }
或者使String也符合协议,但Apple决定删除String符合Sliceable,请小心。
您可以在@AirSpeedVelocity 的博客中阅读更多关于Changes to the Swift Standard Library in 2.0 beta 1 的显着变化。真的很不错。
希望对你有所帮助。