所以我正在开发一个应用程序,它登录到我也在使用alamofire的东西。现在我想做的是当连接的响应代码为200(成功)时将其转到新视图,然后当响应代码为204(失败)时转到不同的窗口我在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]&gt;的窗口不等于视图的窗口!
(没有self.dimiss,但有了它,它确实有效,但根据响应代码I.E 200或204,它不会停留在特定的窗口。
任何帮助都会很棒!
答案 0 :(得分:0)
尝试这样的东西,打开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
}
}
}
要对正在发生的事情作出一些解释,请逐步分解: