【发布时间】:2018-07-02 03:27:01
【问题描述】:
当应用启动时,我需要做一些网络请求。例如,App 获取我的服务器公钥以运行安全的 restful 连接。如果它可以获得密钥,它会进行其他网络操作。我的问题是这些操作是嵌套的,所以一个完成,另一个开始,但如果其中一个有问题,我需要显示一条消息。我有 AppDelegate 类和 SplashViewController,我可以在其中执行这些操作。我不确定这样做时速度方面的最佳方法是什么;
1-) 在 AppDelegate 和通知中启动操作,如果有错误,通知 splashviewcontroller 并显示消息。
2-)在 SplashViewController 类中启动操作。
3-)在打开 SplashViewController 之前等待所有网络操作完成(我不确定是否可以在 AppDelegate 类中显示错误消息)
我在 AppDelegate 运行的示例代码;
APIClient.checkCMS { (result) in
switch result{
case .error(let error):
print(error)
//Notify SplashViewController?
case .success(let returnedObject):
print(returnedObject)
print("Devam")
}
}
【问题讨论】:
-
我会选择数字 1。(假设您的网络代码将在某些服务中,而不是在应用程序委托中。)
-
我还建议研究异步包装器,例如 PromiseKit;它会让这更整洁。
-
我知道 PromiseKit 但这与我的问题无关。我的意思是我的问题是我无法决定将 Promisekit 或一些网络代码放在哪里.. Appdelegate 或 splash 类?
-
@EmreO。这取决于您的要求。当您的数据正在下载/阻止 UI 时,您会让用户在 SplashScreen 上等待吗?或者你会做一个异步请求并以空白状态(或缓存状态)继续应用程序。
-
@Hapeki 我会在任何情况下等待,但我想尽量减少等待时间。
标签: ios swift networking alamofire