Синтаксис для вызова метода с завершением в Swift с использованием шаблона Singleton - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь вызвать метод с замыканием, находящимся в отдельном классе, посредством общего экземпляра.Синтаксис, который работает для вызова функции из того же класса, не работает при вызове из другого класса с использованием общего экземпляра.

Вот метод в классе утилит:

 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 голосов
/ 23 декабря 2018

Ваша текущая функция должна называться следующим образом

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
       }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...