Я пытаюсь изучить Swift, и то, что я пытаюсь сделать, - создать простую страницу входа. Когда пользователь нажимает кнопку входа в систему, я делаю запрос на свою веб-службу в файле shouldPerformSegueWithIdentifier, чтобы проверить правильность имени пользователя и пароля. Я не хочу использовать IBAction (например, touchupinside и т. Д.). После разбора ответа, полученного от веб-службы, я проверю, есть ли какая-либо ошибка из-за ответа веб-службы (например, имя пользователя недействительно). Если есть какая-либо ошибка, я хотел бы предотвратить segue, вернув false. Но я не могу вернуть ложь внутри Alamofire. Итак, как я должен справиться с этим? Вот мой код:Как я должен обрабатывать ответ Alamofire в файле toPerformSegueWithIdentifier?
override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
if identifier == "segueLoginToMainPage" {
//...
//Checking if text fields are filled or not
else {
let callURL : String = CONFIG.BASE_URL + "user/login"
let parameters = [HTTPParamNames.FIELD_USER_NAME : self.txtUserName.text,
HTTPParamNames.FIELD_PASSWORD : self.txtPassword.text]
Alamofire.request(.POST, callURL, parameters: parameters)
.responseJSON { (_,_,JSON,_) in
var returnedData = JSON as NSDictionary
if returnedData["status"] as String == "error" {
//thats what i want to do
return false
}
}
}
}
return true
}
Но я не могу вернуть false, потому что он асинхронный. Я нашел несколько таких вопросов в stackoverflow, но ответы не совсем то, что я ищу. Благодаря!
То, что я точно искал. Спасибо, много! – orhankutlu
Np, но подумайте об изменении кода с помощью IBAction –
Я изменю его. Еще раз спасибо! – orhankutlu