当应用进入后台时,继续NSURLSession数据任务

时间:2015-09-01 08:56:33

标签: ios nsurlsession nsurlsessiondatatask

我有一个应用程序从我的服务器检索JSON数据并将其输入我的Core Data模型。我有这个工作得相当好,减去了一些我已经想不到的随机EXC_BAD_ACCESS错误的问题。在此dataTask期间,它可以检索大量数据,因此可能需要一段时间才能完成。

我正在寻找让用户暂停应用程序的方法,dataTask将继续检索数据。我看到NSURLSession有一个后台模式,但看到它只支持上传和下载任务。

有没有办法支持这个?

我的dataTask函数:

class func Request(file: String, withData: String?, completion: (NSData -> Void)) {
    let url = NSURL(string: "\(root)\(file)")!

    let request = NSMutableURLRequest(URL: url)

    if let sentData = withData {
        request.HTTPMethod = "POST"
        request.HTTPBody = sentData.dataUsingEncoding(NSUTF8StringEncoding)
    }

    let dataTask = session.dataTaskWithRequest(request) {
        data, response, error in

        if error != nil {
            if error?.domain == NSURLErrorDomain && error?.code == NSURLErrorTimedOut {
                print("Data task timed out")
            }
        } else {
            let httpResponse : NSHTTPURLResponse = response as! NSHTTPURLResponse

            if httpResponse.statusCode == 200 {
                completion(data!)
            } else {
                print("Request failed with status code: \(httpResponse.statusCode)")
            }
        }
    }
    dataTask.resume()
}

0 个答案:

没有答案