Swift中的完成处理程序需要奇数下划线字符

时间:2018-03-30 10:44:47

标签: swift syntax parameters anonymous-function

我刚刚创建了一个带有完成处理程序的方法。我无法编译我的应用程序,除非我在我的方法中添加恼人的下划线字符,如下所示:

func searchForLocation(name: String, completion: @escaping (_ results: Array<Any>, _ error: NSError) -> ()) {  }

为什么我可以将我的方法定义为:

func searchForLocation(name: String, completion: @escaping (results: Array<Any>, error: NSError) -> ()) {  }

这当然毫无意义,因为Apple能够创建自己的完成处理程序而不会出现恼人的下划线字符,例如:

open func dataTask(with url: URL, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDataTask

1 个答案:

答案 0 :(得分:1)

只需将您的函数声明更改为:

func searchForLocation(name: String, completion: @escaping (Array<Any>, NSError) -> ()) { ... }

这是因为,你不能在闭包中使用named参数。