Я пытаюсь заменить NSURLConnection
на NSURLSession
, но обнаружил, что с NSURLSession
я не могу читать промежуточные фрагменты данных, как в NSURLConnection
с методом делегата.
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
Раньше я начинал использовать данные до завершения. Я как бы стримлю. Как я могу получить доступ к загруженным данным до завершения NSURLSession
?
Я заметил, что есть (NSURL *)location
, который является временным сохраненным местоположением данных из NSURLSession
до завершения, но я могу получить этот URL-адрес до завершения?
Спасибо
Попробовал это, как предложил Роб:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:[NSOperationQueue mainQueue]];
NSURLSessionTask *task = [session dataTaskWithRequest:request];
[task resume];
Однако вызывался только метод didRecieveResponse.
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler
но didReceiveData не вызывается.
Пробовал менять задачу на downloadTask
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate:self delegateQueue: [NSOperationQueue mainQueue]];
NSURLSessionDownloadTask * downloadTask =[defaultSession downloadTaskWithRequest:request];
[downloadTask resume];
Он работает с делегатом загрузки, но делегат данных (didReceiveData) не вызывается.
Кто-нибудь может сказать мне, что я сделал неправильно?