如何保存为CompletionHandler返回的值?

时间:2016-10-30 22:44:02

标签: swift3 completionhandler

我有下一个使用completionhandler发出http请求并接收json响应的函数:

static_cast

我需要调用此函数,并找到“id_token”字段以将其保存在变量中。我是初学者,我正在尝试这个代码,但我有错误“类型'()'没有下标成员”

func makeRequest3(request: URLRequest, completion: @escaping (JSON!)->Void){
    let task = URLSession.shared.dataTask(with: request){ data, response, error in
        //Code

        print(data as NSData)
        let json = JSON(data: data)

        completion(json)

    }
    task.resume()
}

我怎么做?我正在使用swift3。

1 个答案:

答案 0 :(得分:1)

您的makeRequest3本身不会返回值,但响应会传递给完成处理程序,在完成处理程序中执行响​​应所需的所有内容

makeRequest3(request: request) {response in //<-`response` is inferred as `JSON`, with your `makeRequest3`.
    var idtoken = response["id_token"]
    //Use `idtoken` inside this closure
    //...
}