var session_check = false
if let value = makecookie.desc["Cookie"]{
request.addValue(value, forHTTPHeaderField: "Cookie")
}
do{
let response = try String(contentsOf: url!, encoding: String.Encoding.utf8)
NSLog(" response \(response)")
}catch{
NSLog("error")
}
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
DispatchQueue.main.sync(){
if let e = error {
NSLog("An error has occurred : \(e.localizedDescription)")
return
}
print("Response Data=\(String(data: data!, encoding: .utf8)!)")
do {
let object = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary
guard let jsonObject = object else { return }
let result = jsonObject["session_valid_yn"] as? String
NSLog("object : \(object!)")
if result == "Y" {
session_check = true
return
}
} catch let e as NSError {
print ("An error has occurred while parsing JSONObject : \(e.localizedDescription)")
}
}
}
task.resume()
return session_check;
调用api时输入cookie值
需要饼干。
然后根据请求的URL的结果将值存储在session_check中。
我想根据该值处理页面。
但是,在异步执行dataTask并检索结果之前,将返回session_check。
您如何处理?
有没有办法同步获取值?
答案 0 :(得分:0)
您应该更改将接受完成块的函数,而不是调用返回session_check
的函数,当数据任务完成时,您可以使用session_check
数据调用完成块>
检查此https://stackoverflow.com/a/30401560/3295851,了解如何使用完成处理程序创建方法