使用单例模式在 Swift 中完成调用方法的语法

Syntax for Calling Method with Completion in Swift using Singleton Pattern

我正在尝试通过共享实例调用一个方法,该方法的闭包位于单独的 class 中。当使用共享实例从另一个 class 调用时,用于从同一 class 调用函数的语法不起作用。

这是实用程序中的方法 class:

 func findNearbyLocations(completion: @escaping (MKMapItem?, Error?) -> ())  {
//get location
}

这适用于从 class:

中调用它
self.findNearbyLocations(query:val1!) {
        placemark, error in
        guard let placemark = placemark, error == nil else {
            return
        }
}

当我尝试从另一个 class 调用它时,使用以下命令,编译器给出错误:

Extra argument 'query' in call

Utilities.shared.findNearbyLocations(query:val1!) {
           placemark, error in
           guard let placemark = placemark, error == nil else {
           return
       }
 }

我可以毫无问题地使用共享实例调用其他方法。这是什么原因造成的?

你当前的函数应该这样调用

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
       }
 }