Всем привет!
Столкнулся с проблемой, подозреваю что это не столько swift, сколько основы программирования, но все же. Суть проблемы:
При использовании клоужеров или других вариантов, когда используется асинхронный поток, как понять, что дело сделано и можно пользоваться данными? Возможно, я просто мыслю линейно, а нужно по другому
Пример 1: запрос данных с сервера. У меня получается сейчас забирать данные, парсить JSON и отображать результаты в таблице. Но вот если мне нужно получит данные для авторизации и до получения в приложении не должно ничего происходить, максиму повести прелоадер, что бы было видно что-то то происходит, как этого добиться?
Пример 2: Мне нужно получить фотки из галереи и отправит на сервер, я её открываю вот так:
@IBAction func photoButtonPressed(_ sender: Any) {
let imagePickerController = UIImagePickerController()
imagePickerController.delegate = self
imagePickerController.sourceType = .photoLibrary
present(imagePickerController, animated: true, completion: nil)
}
и плюс расширение:
extension SignUpViewController: UINavigationControllerDelegate, UIImagePickerControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
picker.dismiss(animated: true, completion: nil)
guard let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage else { return }
photoImageView.image = image
}
}
в момент вызова
present(imagePickerController, animated: true, completion: nil)
я так понимаю запускается асинхронный поток и код продолжает выполняться дальше. Как же понять что фото из галереи получено и можно его оправлять на сервер?