Alamofire Https 请求,在 IBAction

问题描述

就像上面的问题所说的那样,完全跳过了对 det json 和 decode 的请求!但是如果它在 viewDidLoad 中它就有效......任何人都可以启发我并帮助我如何解决这个问题吗?提前致谢!

class LoginViewController:UIViewController {
    
    @IBOutlet weak var login_id_field: UITextField!
    @IBOutlet weak var login_pw_field: UITextField!
    
    
    var loginData = [LoginData]()
    var storeData = [StoreData]()

因此 viewDidLoad() 中的以下部分工作正常,

    override func viewDidLoad() {
        super.viewDidLoad()
        self.hideKeyboardWhenTappedAround()
        let param2 = ["login": self.login_id_field.text!]
        let url2 = "http://dev.purejoin.com/PJPI/login.php"
        print("HI")
        
        DispatchQueue.main.async {
            let headers: HTTPHeaders = [
                "Accept": "text/html","Content-Type" : "application/x-www-form-urlencoded"
            ]
            AF.request(url2,method: .post,parameters: param2,encoding: URLEncoding.httpBody,headers: headers).responseString { response in
                #if DEBUG
                let request = response.request
                NSLog("Request: \(request!.httpMethod!) - \(request!.url!.absoluteString)\n\(request!.httpBody.map { body in String(data: body,encoding: .utf8) ?? "" } ?? "")")
                switch response.result {
                case .success(let value):
                    print("Response with content \(value)")
                case .failure(let error):
                    print("Response with error: \(error as NSError): \(response.data ?? Data())")
                }
                #endif
            }
        }
    }

但这里下面不起作用.. Dispatchqueue.main.async 只是被跳过了?至少看起来是这样..

    @IBAction func login_button(_ sender: Any) {
        //Check for email field that is too short or just didn't get any input
        if (self.login_id_field.text!.count < 7 ) {
            let alert = UIAlertController(title: "Invalid Email",message: "Please Check Your Email",preferredStyle: .alert)
            let ok = UIAlertAction (title: "OK",style: UIAlertAction.Style.cancel,handler: nil)
            alert.addAction(ok)
            self.present(alert,animated: true,completion: nil)
        }
        //query
        else {
            let param2 = ["login": self.login_id_field.text!]
            let url2 = "http://dev.purejoin.com/PJPI/login.php"
            print("HI")
            
            DispatchQueue.main.async {
                
                let headers: HTTPHeaders = [
                    "Accept": "text/html","Content-Type" : "application/x-www-form-urlencoded"
                ]
                AF.request(url2,headers: headers).responseString { response in                        #if DEBUG
                let request = response.request
                NSLog("Request: \(request!.httpMethod!) - \(request!.url!.absoluteString)\n\(request!.httpBody.map { body in String(data: body,encoding: .utf8) ?? "" } ?? "")")
                switch response.result {
                case .success(let value):
                    print("Response with content \(value)")
                case .failure(let error):
                    print("Response with error: \(error as NSError): \(response.data ?? Data())")
                }
                #endif
                }
            }
            
            
            
            //MD5
            let md5 = MD5(self.login_pw_field.text!)
            print (self.loginData)
            if (md5 == String(self.loginData[0].user_password)) {
                //OPEN SEGUE
                let storyBoard: UIStoryboard = UIStoryboard(name: "Main",bundle: nil)
                let vc = storyBoard.instantiateViewController(withIdentifier: "selectStore") as! SelectStoreViewController
                self.present(vc,completion: nil)
            } else {
                let alert = UIAlertController(title: "Wrong Password",message: "Please Check Your Password",preferredStyle: .alert)
                let ok = UIAlertAction (title: "OK",handler: nil)
                alert.addAction(ok)
                self.present(alert,completion: nil)
            }
            
        }
    }
    
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)