我刚刚创建了一个带有完成处理程序的方法。我无法编译我的应用程序,除非我在我的方法中添加恼人的下划线字符,如下所示:
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
答案 0 :(得分:1)
只需将您的函数声明更改为:
func searchForLocation(name: String, completion: @escaping (Array<Any>, NSError) -> ()) { ... }
这是因为,你不能在闭包中使用named
参数。