URLSession didCompleteWithError无错误

在一个在NSURLSessionDelegate控制器中做后台URLSession的IOS9应用程序上工作。 这是我如何开始它:

self.session_data = [[NSMutableData alloc] init]; NSURL *url = [NSURL URLWithString:src]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; NSURLSessionConfiguration *backgroundConfigObject = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier: @"myBackgroundSessionIdentifier"]; self.session = [NSURLSession sessionWithConfiguration: backgroundConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]]; self.download = [self.session dataTaskWithRequest: request ]; [self.download resume]; 

到现在为止还挺好。 我实现了三个委托方法。 “didReceiveData”被首先调用,并存储数据。

 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data{ NSLog(@"%s",__func__); [self.session_data appendData:data]; } 

之后,调用了“didCompleteWithError”。 “completionHandler”处理程序永远不会被调用。

什么混淆了“didCompleteWithError”的消息是,实际的错误对象是零。 我看到了一些类似的未解答的问题。 加载时,我不离开控制器/视图。 我是否需要将该function移入AppDelegate?

苹果文档表示, didCompleteWithError报告只有客户端错误,否则为零:

“服务器错误不会通过错误参数报告, 委托人通过错误参数收到的唯一错误是客户端错误,例如无法parsing主机名或连接到主机。

这是链接到文档。

如果你想检查其他错误,如会话的错误,你必须实现会话协议委托

 - URLSession:didBecomeInvalidWithError: 

有关更多详细信息,请参阅此答案