我正在尝试设置一个错误标识符,以便如果用户输入的信息错误,则用户会在errorLabel中收到错误消息。我试图在{ (response) in
中放入“错误”,但这引发了错误。什么是处理此问题的好方法。
AF.request(url, method: .post, parameters: parameters as Parameters, encoding: URLEncoding.default).response { (response) in
print(response)
if error != nil {
// Couldn't sign in
self.errorLabel.text = error!.localizedDescription
self.errorLabel.alpha = 1
}
else {
let tabBarController =
self.storyboard?.instantiateViewController(identifier: Constants.Storyboard.TabBarController) as? UITabBarController
self.view.window?.rootViewController = tabBarController
self.view.window?.makeKeyAndVisible()
}
}
}
由于网络调用在后台线程中运行,如果需要在网络调用中更新UI元素,则应在主线程中进行。以这种方式更改错误部分:
if error != nil {
DispatchQueue.main.async {
// Couldn't sign in
self.errorLabel.text = error!.localizedDescription
self.errorLabel.alpha = 1
}
}
您可以使用alamofire中的开关盒来识别错误。
AF.request(url, method: .post, parameters: parameters as Parameters, encoding:
URLEncoding.default).response { (response) in
switch response.result {
case .success:
//sign in
let tabBarController =
self.storyboard?.instantiateViewController(identifier: Constants.Storyboard.TabBarController) as? UITabBarController
self.view.window?.rootViewController = tabBarController
self.view.window?.makeKeyAndVisible()
case .failure(let error):
// Couldn't sign in
self.errorLabel.text = error!.localizedDescription
self.errorLabel.alpha = 1
}
}