Получение данных из обработчика завершения Swift с архитектурой фасада - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь создать такую ​​архитектуру:

VC вызывает метод экземпляра Facade для запуска сетевого запроса.

Фасад передает строку в метод экземпляра Networking, который возвращает объект Data,Этот Data объект передается другому классу по имени Parse для анализа и создания объекта.

Я ищу очень простой способ получения данных из обработчика завершения, но в итоге просто вызываю методы в цепочке, которая ни к чему не приводит.Пока я в основном могу передавать данные обратно в Facade, реализовав обработчик завершения в методе Networking Instance.Когда я вызываю метод экземпляра Networking makeAPIRequest(_:String, _:(Data)->Void) -> Void, я получаю обратный вызов в свой класс Facade, но он не устанавливает переменную экземпляра.

Метод экземпляра фасада

    func grabDataWithString(string: String) -> Data?{


        networking.makeAPIRequest(apiString: string) { (data) in
            self.dataObject = data   
        }

        return self.dataObject!
    }

Метод сетевого экземпляра

func makeAPIRequest(apiString: String, completion: @escaping (Data) -> Void) -> Void {
    guard let url: URL = URL(string: apiString) else{
        print("ERROR no URL")
        return
    }

    let urlRequest = URLRequest(url: url)

    let dataSession = URLSession.shared
    let dataTask = dataSession.dataTask(with: urlRequest) { (data, response, error) in

        guard error == nil else{
            print("ERROR found in networking call")
            print(error!)
            return
        }

        if data != nil{

            completion(data!)

        }else{
            print("ERROR: did not receive data")
        }
    }

    dataTask.resume()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...