代码之家  ›  专栏  ›  技术社区  ›  user1904273

使用单例模式在Swift中调用带补全的方法的语法

  •  0
  • user1904273  · 技术社区  · 6 年前

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

    以下是utilities类中的方法:

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

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

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

    调用中的额外参数“query”

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

    我能够使用共享实例调用其他方法而不会出现问题。这是什么原因呢?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Shehata Gamal    6 年前

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