Я разрабатываю приложение iOS с Xcode и Swift.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 scipt на моем сервере. Этот PHP-скрипт проверяет, действительно ли эта пара данных/паролей существует. Если это так, то отвечает «true», иначе «false».
Проблема заключается в следующем: Когда пользователь подает запрос, (этот код будет запущен), пользовательский интерфейс замерзает в течение нескольких секунд, а оповещение требует ок. Появится 15 секунд. Но это не ошибка скрипта PHP, потому что print("responseString = \(responseString)")
печатает сразу. Я также получаю это сообщение об ошибке: https://codeshare.io/TGwe6
Кто-нибудь знает, что я делаю неправильно?
P.S.
Я знаю, что многие думают, что в коде отсутствует код (например, хеш вместо пароля или проверка на наличие пустых файлов). Это всего лишь пример.
P.P.S: Обновлен код. Теперь работает.
1) Никогда не делать работу пользовательского интерфейса в фоновом потоке. 2) 'UIAlertView' устарел. – rmaddy
2) Итак, что делать? –
Прочитайте документацию для 'UIAlertView', он скажет вам, что использовать вместо этого. – rmaddy