Sta*_*ers 5 networking objective-c ios ios9
在正在作为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];
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。我实现了三种委托方法。首先调用“ didReceiveData”,然后存储数据。
- (void)URLSession:(NSURLSession *)session
dataTask:(NSURLSessionDataTask *)dataTask
didReceiveData:(NSData *)data{
NSLog(@"%s",__func__);
[self.session_data appendData:data];
}
Run Code Online (Sandbox Code Playgroud)
在那之后,立即调用“ didCompleteWithError”。永远不会调用'completionHandler'处理程序。
关于“ didCompleteWithError”消息的困惑在于,实际的错误对象为nil。我已经看到一些类似的未解决的问题。加载时我不会离开控制器/视图。我需要将该功能移至AppDelegate吗?
苹果医生说didCompleteWithError 只报告客户端错误,否则为nil:
“服务器错误不会通过error参数报告。您的委托通过error参数接收的唯一错误是客户端错误,例如无法解析主机名或无法连接到主机。”
这是文档的链接。
如果要检查其他错误,例如会话错误,则必须实现会话协议委托
- URLSession:didBecomeInvalidWithError:
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅该答案
| 归档时间: |
|
| 查看次数: |
1750 次 |
| 最近记录: |