У меня есть служба, которая содержит несколько функций, которые подготавливают данные для отправки в веб-службу.iOS - Возвращаемый запрос данных async для ViewController
По существу я собираю свои данные в ViewController, передаю его в Сервис, обрабатываю его и преобразовываю, а затем передаю эту информацию классу, который отвечает за передачу данных (GET, POST, PUT, DELETE)
ie.
ViewController:
var model = MyModel()
var service = MyService()
service.createNewDBEntryOnServer(model)
Услуги:
func createNewDBEntryOnServer(model: MyModel) -> MyModel {
var jsonToPost = JSONService.modelToJSON(model)
networkService.post("ext-url", jsonToPost, completion { data, response, error) in {
//Data returned here from JSONService
dispatch_async(dispatch_get_main_queue(), {
//Can return this data to ViewController for processing
})
})
return MyModel()
}
метод NETWORKSERVICE 'пост' использует NSURLSession.sharedSession(), и выполняет асинхронный запрос к веб-службы с помощью session.dataTaskWithRequest
Я могу вернуть данные просто отлично, но поскольку между моим ViewController и моим NetworkService есть слой, я не уверен, как обнаружить разница с возвратом на MyService до и после запроса данных асинхронной передачи. В некоторых случаях мне нужно было бы отобразить UIActivityIndicator, поэтому моему ViewController, например, пришлось бы ждать ответа async перед выполнением segue.
Является ли мой подход типичный способ делать вещи в iOS? Этот шаблон проектирования я сильно использую в .NET, но для синхронных подключений. Лучше избегать использования NSNotificationCenter? – TeddyRuxpin
Я добавил еще несколько предложений в ответ на ваш комментарий. – Gruntcakes