Swift中使用Singleton Pattern完成调用方法的语法

时间:2018-12-22 23:27:18

标签: ios singleton closures

我试图通过共享实例来调用带有位于单独类中的闭包的方法。使用共享实例从另一个类调用该函数时,无法从同一类调用该函数的语法不起作用。

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

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

我可以使用共享实例调用其他方法而不会出现问题。有什么原因呢?

1 个答案:

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