当URLSessionDownload任务失败时,从委托方法中收到的错误对象获取resumeData

时间:2018-04-30 13:03:29

标签: ios nsurlsessiondownloadtask

我已经实现了URLSessionDownloadDelegate,每当我的downloadTask失败时,我会在其中一个委托的回调方法中收到一个错误对象。当我附加调试器并将此错误对象打印到控制台时,我可以看到它包含ResumeData对象。但是我无法使用错误对象在代码中访问它。

这是控制台输出:

  

(lldb)po error.debugDescription“可选(错误   Domain = NSURLErrorDomain代码= -999 \“已取消\”   的UserInfo = {NSErrorFailingURLStringKey = https://mysampleurl,   NSErrorFailingURLKey = https://mysampleurl,   NSURLSessionDownloadTaskResumeData =< 3c3f786d 6c207665 7273696f   6e3d2231 2e302220 656e636f 64696e67 3d225554 462d3822 3f3e0a3c   21444f43 54595045。 。 。 692c2031 37204a75 6e203230 31362031 373a3433   3a303120 474d543c 2f737472 696e673e 0a3c2f64 6963743e 0a3c2f70   6c697374 3e0a>,NSLocalizedDescription = cancel})“

我想从上面的错误对象输出中访问“NSURLSessionDownloadTaskResumeData”

方法定义是:

  

func urlSession(_ session:URLSession,task:URLSessionTask,   didCompleteWithError错误:错误?)

1 个答案:

答案 0 :(得分:1)

我最近处理了这个要求,并创建了一个类:https://github.com/skdevil/PrakrstaFileDownloader

这是你如何获得resumeData:

func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
        if error != nil{
            let errorString = (error! as NSError).userInfo
            if let resumeData = errorString["NSURLSessionDownloadTaskResumeData"] as? Data, let urlKey = errorString["NSErrorFailingURLStringKey"] as? String {

            }
        }
    }