我试图通过共享实例来调用带有位于单独类中的闭包的方法。使用共享实例从另一个类调用该函数时,无法从同一类调用该函数的语法不起作用。
这是实用程序类中的方法:
func findNearbyLocations(completion: @escaping (MKMapItem?, Error?) -> ()) {
//get location
}
这可以从类中调用它:
self.findNearbyLocations(query:val1!) {
placemark, error in
guard let placemark = placemark, error == nil else {
return
}
}
当我尝试使用以下内容从另一个类调用它时,编译器给出错误:
通话中的额外参数“查询”
Utilities.shared.findNearbyLocations(query:val1!) {
placemark, error in
guard let placemark = placemark, error == nil else {
return
}
}
我可以使用共享实例调用其他方法而不会出现问题。有什么原因呢?
答案 0 :(得分:1)
您当前的函数应这样调用
Utilities.shared.findNearbyLocations { (placemark, error) in
guard let placemark = placemark, error == nil else {
return
}
}
如果需要发送参数,则将功能更改为
func findNearbyLocations(query:QueryType,completion: @escaping (MKMapItem?, Error?) -> ()) { --- }
那你就可以做
Utilities.shared.findNearbyLocations(query:Your_Value) { (placemark, error) in
guard let placemark = placemark, error == nil else {
return
}
}