gpt4 book ai didi

swift - 我应该如何处理 shouldPerformSegueWithIdentifier 中的 Alamofire 响应?

转载 作者:可可西里 更新时间:2023-10-31 23:58:10 28 4
gpt4 key购买 nike

我正在尝试学习 Swift,我想做的是创建简单的登录页面。每当用户单击登录按钮时,我都会在 shouldPerformSegueWithIdentifier 中向我的 Web 服务发出请求,以检查用户名和密码是否正确。我不想使用 IBAction(如 touchupinside 等)。解析来自 Web 服务的响应后,我检查是否有任何错误来自 Web 服务响应(例如用户名无效)。如果有任何错误,我想通过返回 false 来防止 segue。但我不能在 Alamofire 内部返回 false。那我应该怎么处理呢?这是我的代码:

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 中发现了一些类似的问题,但答案并不是我想要的。谢谢!

最佳答案

您根本不应该尝试在 shouldPerformSegueWithIdentifier 中使用异步方法。相反,您应该:

  1. 从登录按钮本身移除 segue。

  2. 在 View Controller 本身之间添加 segue。具体来说,control-从原始场景的 View Controller 图标拖动(在 Xcode 6+ 中,此图标位于场景上方的栏中,在早期版本的 Xcode 中,此图标位于场景下方的栏中) 到目的地场景。

  3. 给这个新的 segue 一个“ Storyboard标识符”。

  4. 将登录按钮连接到 IBAction 函数。

  5. 在那个 IBAction 函数中,执行您的异步网络请求,如果登录成功,则以编程方式 performSegueWithIdentifier,提供您在第 3 步。

关于swift - 我应该如何处理 shouldPerformSegueWithIdentifier 中的 Alamofire 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28193597/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com