问题遇到的现象和发生背景
如下面代码,本意是通过用户密码认证之后在跳转页面,但是判断json返回数据只能在闭包中获取到变量值,而且闭包中无法进行页面跳转,想请教各位有什么其他方法,或者更好的思路吗?
override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
if identifier == "succses"{
let netWorkToQc = NetWorkQc()
if usernameText.text == "" || pwdText.text == "" || usernameText.text == nil || pwdText.text == nil{
return false
}
let parameters: [String: Any] = [
"user" : usernameText.text,
"pwd": pwdText.text
]
var userSts = 0
netWorkToQc.getUrlFunc(urlStr:"http://192.168.50.91:8080",parametersArray:parameters,completion: { [weak self] (result, error) in
if let error = error {
print(error.localizedDescription)
}
if let result = result {
userSts = result.sts
}else{
userSts = 0
}
})
}
return true
}
func getUrlFunc(urlStr:String,parametersArray:[String:Any],completion:@escaping (_ data:ErrorResponse?, _ error:Error?) -> Void)
{
let Url = String(format: urlStr)
guard let serviceUrl = URL(string: Url) else {return}
let parameters: [String: Any] = parametersArray
/*
[
"request": [
"xusercode" : "YOUR USERCODE HERE",
"xpassword": "YOUR PASSWORD HERE"
]
]*/
var request = URLRequest(url: serviceUrl)
request.httpMethod = "POST"
request.setValue("Application/json", forHTTPHeaderField: "Content-Type")
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else {return}
request.httpBody = httpBody
request.timeoutInterval = 20
let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
if(error != nil) {
completion(nil, error)
}else
{
if let data = data {
do {
let JsonBlackData = try? JSONDecoder().decode(ErrorResponse.self, from: data)
completion(JsonBlackData, nil)
} catch {
completion(nil, error)
}
}else{
completion(nil, nil)
}
}
}.resume()
}