NSURLSession()。dataTaskWithRequest(...)不能抛出?

时间:2015-11-23 10:22:22

标签: ios swift nsurlsession

我有这个函数来处理API调用(makeAPICall),我想为某些API响应和httpResponse.statusCode != 200时抛出错误。 问题是,据我所知,NSURLSession().dataTaskWithRequest(...)不能抛出。这是正确的,如果是的话,是否有一些解决方法?或者我应该做一些完全不同的事情?

3 个答案:

答案 0 :(得分:1)

由于dataTaskWithRequest是一个异步操作,因此使用完成处理程序可以简化其错误处理。如果要抛出,则在操作完成时很难处理错误。

因此,您应该在完成处理程序中处理错误条件。如果你想在完成时抛出自己的错误,那么这是可能的,但有点多余。

答案 1 :(得分:1)

不是抛出错误,而是让客户端传入一个块,并在请求失败时(或者就此而言,当成功完成时)运行该块。

答案 2 :(得分:0)

实际上,如果发生错误,您可以处理错误。例如

 let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
            if let error = error {
                print(error)
                // do whatever you want, there is an error
            }
            if let data = data{
                print("data =\(data)")
            }
            if let response = response {
                print("url = \(response.URL!)")
                print("response = \(response)")
                let httpResponse = response as! NSHTTPURLResponse
                print("response code = \(httpResponse.statusCode)")
            }
        })

我向您展示了如何获取响应代码。