如果来自 Alamofire 请求的响应是否为 200,我将如何更改后续视图
How would i go about changing seque views if the response is 200 or not from a Alamofire request
所以我正在开发一个可以登录我也在使用 alamofire 的东西的应用程序。现在我想做的是当连接的响应代码为 200(成功)时让它转到一个新视图,然后当响应代码为 204(失败)时转到另一个 windows 我正在写这在 swift 3.
这是我当前的 IBAction
@IBAction func loginBtn(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
self.performSegue(withIdentifier: "login", sender: isvalid200())
self.dismiss(animated: true, completion: nil)
self.performSegue(withIdentifier: "error", sender: isinvalid())
现在我知道这不是应该如何完成的,但这是我的想法。另外,这是我的错误处理代码。
func isvalid200() {
Alamofire.request("https://myanimelist.net/api/account/verify_credentials.xml/\(user)/\(pass)")
.validate(statusCode: 200..<200) // if error is 200
.validate(contentType: ["application/json"])
}
func isinvalid() {
Alamofire.request("https://myanimelist.net/api/account/verify_credentials.xml/\(user)/\(pass)")
.validate(statusCode: 204..<204) // if error is 204
.validate(contentType: ["application/json"])
}
至于我得到的错误是这个
MyAnime[7446:265163] > 的 window 不等于 的 window!
(没有 self.dimiss 但有了它,它确实有效,但它不会根据响应代码 I.E 200 或 204 停留到特定的 windows。
任何帮助都会很棒!
尝试像这样打开 statusCode
@IBAction func loginBtn(_ sender: Any) {
Alamofire.request("https://myanimelist.net/api/account/verify_credentials.xml/\(user)/\(pass)").responseJSON { [weak self] response in
guard let strongSelf = self, let resp = response.response else { return }
switch resp.statusCode {
case 200:
DispatchQueue.main.async {
strongSelf.performSegue(withIdentifier: "login", sender: strongSelf)
}
case 204:
DispatchQueue.main.async {
strongSelf.performSegue(withIdentifier: "error", sender: strongSelf)
}
default:
//Some other status code
}
}
}
为了对发生的事情给出一些解释,让我们逐步分解它:
- 用户在输入 username/password
后按下登录按钮
- 您发出网络请求以验证凭据
- 收到响应后,您可以根据状态码判断这是否是有效用户
- 此时,您只需要执行必要的 segue 以过渡到下一个视图控制器。如果您想返回呈现视图控制器,您只会调用 dismiss。
所以我正在开发一个可以登录我也在使用 alamofire 的东西的应用程序。现在我想做的是当连接的响应代码为 200(成功)时让它转到一个新视图,然后当响应代码为 204(失败)时转到另一个 windows 我正在写这在 swift 3.
这是我当前的 IBAction
@IBAction func loginBtn(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
self.performSegue(withIdentifier: "login", sender: isvalid200())
self.dismiss(animated: true, completion: nil)
self.performSegue(withIdentifier: "error", sender: isinvalid())
现在我知道这不是应该如何完成的,但这是我的想法。另外,这是我的错误处理代码。
func isvalid200() {
Alamofire.request("https://myanimelist.net/api/account/verify_credentials.xml/\(user)/\(pass)")
.validate(statusCode: 200..<200) // if error is 200
.validate(contentType: ["application/json"])
}
func isinvalid() {
Alamofire.request("https://myanimelist.net/api/account/verify_credentials.xml/\(user)/\(pass)")
.validate(statusCode: 204..<204) // if error is 204
.validate(contentType: ["application/json"])
}
至于我得到的错误是这个
MyAnime[7446:265163] > 的 window 不等于 的 window!
(没有 self.dimiss 但有了它,它确实有效,但它不会根据响应代码 I.E 200 或 204 停留到特定的 windows。
任何帮助都会很棒!
尝试像这样打开 statusCode
@IBAction func loginBtn(_ sender: Any) {
Alamofire.request("https://myanimelist.net/api/account/verify_credentials.xml/\(user)/\(pass)").responseJSON { [weak self] response in
guard let strongSelf = self, let resp = response.response else { return }
switch resp.statusCode {
case 200:
DispatchQueue.main.async {
strongSelf.performSegue(withIdentifier: "login", sender: strongSelf)
}
case 204:
DispatchQueue.main.async {
strongSelf.performSegue(withIdentifier: "error", sender: strongSelf)
}
default:
//Some other status code
}
}
}
为了对发生的事情给出一些解释,让我们逐步分解它:
- 用户在输入 username/password 后按下登录按钮
- 您发出网络请求以验证凭据
- 收到响应后,您可以根据状态码判断这是否是有效用户
- 此时,您只需要执行必要的 segue 以过渡到下一个视图控制器。如果您想返回呈现视图控制器,您只会调用 dismiss。