XcodeとSwiftでiOSアプリケーションを開発しています。UIがフリーズし、処理が遅れて実行される
私は、このコードに問題がある:
@IBAction func login(sender: AnyObject) {
let request = NSMutableURLRequest(URL: NSURL(string: "http://myurl.com/contact/checklogin.php")!)
request.HTTPMethod = "POST"
let postString = "username=\(username.text!)&password=\(password.text!)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(responseString)")
dispatch_async(dispatch_get_main_queue(),{
if (responseString == "false") {
let alert = UIAlertView(title: "Error!", message: "Something is wrong. Please check this!", delegate: nil, cancelButtonTitle: "Okay")
alert.show()
}
else {
let alert = UIAlertView(title: "Successful!", message: "You'll get logged in now!", delegate: nil, cancelButtonTitle: "Okay")
alert.show()
}
}
})
task.resume()
}
このコードでは、ユーザのログは私のサーバー上のPHPザ・スクリプトにユーザー名とパスワードを送信します。このPHPスクリプトは、このデータ/パスワードのペアが実際に存在するかどうかをチェックします。そうであれば「真」、そうでなければ「偽」と応答する。
問題は次のとおりです。 ユーザータップが送信されると(このコードは実行されます)、UIは数秒間フリーズし、アラートにはcaが必要です。 15秒間表示されます。しかし、すぐにprint("responseString = \(responseString)")
が印刷されるので、PHPスクリプトミスではありません。私もこのエラーメッセージが表示されます:https://codeshare.io/TGwe6
私は間違って何をしているのですか?
P.S.
私は、多くの考えがパスワードの代わりにハッシュ(空のファイルをチェックするのではなくハッシュのような)に欠けていることを知っています。 これは単なる例です。
P.P.S:コードを更新しました。それは今働いている。
1)は、バックグラウンドスレッドでUIの作業を行うことはありません。 2) 'UIAlertView'は非推奨です。 – rmaddy
2)だから、どうしたらいいですか? –
'UIAlertView'のドキュメントを読むと、代わりに何を使うべきかがわかります。 – rmaddy