我正在试图弄清楚为什么这段代码需要这么长时间才能登录。它目前有效,但它真的很慢。我的控制台显示它正在接收成功响应,但它仍然没有进入下一个视图控制器一段时间。我还发现,在我添加代码以解除加载指示符后,它立即关闭。所以现在如果我提供适当的凭据,它将关闭加载指示器但仍然等待15秒才能进入下一个视图控制器。想法?
let request = NSMutableURLRequest(URL: NSURL(string: "myurl")!)
request.HTTPMethod = "POST"
var postString = "user=\(username.text)&pass=\(password.text)"
var success = 0
var alert = UIAlertView(title: "Logging In", message: "Please wait...", delegate: self, cancelButtonTitle: "Cancel");
var loadingIndicator = UIActivityIndicatorView(frame: CGRectMake(50, 10, 37, 37)) as UIActivityIndicatorView
loadingIndicator.center = self.view.center;
loadingIndicator.hidesWhenStopped = true
loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
loadingIndicator.startAnimating();
alert.setValue(loadingIndicator, forKey: "accessoryView")
loadingIndicator.startAnimating()
alert.show();
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
let alert = UIAlertView()
alert.title = "Login Failed!"
alert.message = "Error: \(error)"
alert.delegate = self
alert.addButtonWithTitle("OK")
alert.show()
return
}
println("response = \(response)")
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
println("responseString = \(responseString)")
let jsonData = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers , error: nil) as! NSDictionary
success = jsonData["Success"] as! Int
if(success == 1){
alert.dismissWithClickedButtonIndex(0, animated: true)
self.login()
}
else{
let alert = UIAlertView()
alert.title = "Login Failed"
alert.message = "Invalid username/password"
alert.delegate = self
alert.addButtonWithTitle("Retry")
alert.show()
}
}
task.resume()