我基本上在填充单例数据存储区的网络调用和显示数据的第一个视图控制器之间遇到竞争条件。显示第一个视图控制器后没有数据,但如果我重新加载视图,那么数据将在那里。那么如何在网络调用完成后才推送视图控制器?谢谢。这是我目前的代码:
guard let username = emailTextField.text else { return }
guard let password = passwordTextField.text else { return }
UIApplication.shared.beginIgnoringInteractionEvents()
TFTINetworkManager.shared().login(username: username, password: password){ loginSuccessful in
self.activityIndicator.stopAnimating()
if loginSuccessful {
TFTINetworkManager.shared().getUserInfo { _ in
let VC = TFTIHomeFeedVC.createFromStoryboard()
self.navigationController?.pushViewController(VC, animated: true)
}
} else {
let alert = UIAlertController(title: "Unsuccessful Login", message: "Did you provide the right login credentials", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "dismiss", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
UIApplication.shared.endIgnoringInteractionEvents()
}
答案 0 :(得分:0)
我明白了。我基本上有嵌套的网络调用,并将外部网络调用的完成处理程序称为嵌套网络调用的完成值。