【问题标题】:Cannot invoke 'split' with an argument list of type '(String, (String) -> Bool)' in SWIFT 2无法在 SWIFT 2 中使用类型为“(String,(String)-> Bool)”的参数列表调用“split”
【发布时间】:2015-07-30 14:56:33
【问题描述】:

错误:无法使用类型为“(String, (String) -> Bool)”的参数列表调用“split”

我想使用的代码:let nameArr = split(name) {$0 == "."}

【问题讨论】:

标签: xcode swift swift2 xcode7


【解决方案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) }

使用 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 的显着变化。真的很不错。

希望对你有所帮助。

【讨论】:

  • 我得到一个错误初始化条件绑定必须具有可选类型,而不是'NSURL'
  • 提供你的变量name的声明,看我的回答
  • 我对 swift 真的很陌生,所以我知道这里该怎么做是错误Image
  • 我看到你的错误,但有什么问题?你不能再以这种方式使用split,你需要将你的行let nameArr = split(name) {$0 == "."}更改为上面我解释过的任何一个。
  • 很抱歉让我感到痛苦,但他们都没有为我工作,每个人都以不同的方式显示错误,例如看看这个image
最近更新 更多