Obecnie tworzę aplikację na iOS 6 na iPady, która korzysta z asynchronicznych plików do pobrania. Aby otrzymać informacje o postępie, skorzystałem z delegata NSURLConnectionDownloadDelegate
. Pobieranie i postępy otrzymane przezNSURLConnectionDownloadDelegate destinationURL
– connection:didWriteData:totalBytesWritten:expectedTotalBytes:
działa dobrze.
Jednak po zakończeniu pobierania, nie wiem jak wydobyć dane z NSURL
destinationURL
dostarczonych przez delegatemethod
– connectionDidFinishDownloading:destinationURL:
destinationUrl otrzymanych String wygląda „/private/var/mobile/Applications/7CB3B194-9E79-4F0B-ACFD-7B87AA8C7BAF/tmp/filename.mp4
”
Następnie próbuję wyodrębnić dane z podanego NSURL:
NSData *data = [[NSData alloc] initWithContentsOfURL:destinationURL];
Dane jednak jest pusty ...
NSLog(@"data Size: %@", data.length); //prints out 0
Ma ktoś ten sam problem przy użyciu NSURLConnectionDownloadDelegate
? Wszelkie pomysły, jak rozwiązać?
Edit: Próbowałem skopiować plik, a potem użyć [NSData initWithContentsOFFile]
jak sugerowano, ale rozmiar danych jest nadal 0.
- (void) connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *)destinationURL
{
[[NSFileManager defaultManager] copyItemAtPath:destinationURL.path toPath:DEST_PATH error:nil];
NSData *data = [[NSData alloc] initWithContentsOfFile:DEST_PATH];
NSLog(@"data Size: %i", data.length); //still returns 0..
}
Edit2: mogę wyodrębnić NSData
przy użyciu metody sendAsynchronousRequest
z NSURLConnection
. Jednak jak to, nie jestem w stanie określić postęp pobierania ...
[NSURLConnection sendAsynchronousRequest:theRequest queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
if (data){
NSLog(@"Size of the data: %i Bytes(s)", data.length); //works fine
[data writeToFile:DEST_PATH atomically:YES];
//From this point i can use the file at DEST_PATH
NSLog(@"Succeeded!");
}
else if (error)
NSLog(@"%@",error);
}];
co jeśli skopiować plik do ścieżki zawartości i spróbuj go otworzyć tam? – jimpic
Wypróbuj tę odpowiedź: http://stackoverflow.com/questions/12582849/nsurlconnectiondownloaddelegate-expectedtotalbytes-zero-in-ios-6 – emrys57
Czy spojrzałeś na odpowiedź z poprzedniego komentarza? – emrys57