我想调用api并同步获取值

时间:2019-06-10 11:38:56

标签: swift

 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。

您如何处理?

有没有办法同步获取值?

1 个答案:

答案 0 :(得分:0)

您应该更改将接受完成块的函数,而不是调用返回session_check的函数,当数据任务完成时,您可以使用session_check数据调用完成块

检查此https://stackoverflow.com/a/30401560/3295851,了解如何使用完成处理程序创建方法