2015-08-07 13 views
13

Ho implementato NSURLSessionDownloadTask per scaricare più video contemporaneamente. In uno scenario normale ogni cosa funziona bene. Funziona anche il recupero dello sfondo. Ma quando chiudo l'applicazione e riavvio l'applicazione e faccio lo stesso downloadTask: didFinishDownloadingToURL il percorso del file temporaneo che sto ottenendo è sbagliato. Il file non esiste nel percorso. Quando ho controllato il percorso attraverso finder ho trovato che i file esistono, l'unica differenza è che il percorso fornito non contiene il nome del file e che esiste anche una cartella aggiuntiva con lo stesso nome della cartella principale in cui devono essere memorizzati i file. Si prega di trovare il percorso condiviso sottoNSURLSessionDownloadTask downloadTask: didFinishDownloadingToURL il file non esiste?

/Users/sfm/Library/Developer/CoreSimulator/Devices/EB96B330-4928-422F-8655-DC0E9781014A/data/Containers/Data/Application/54691CE2-D599-41CA-813B-2A8FF7B868F8/Library/Caches/com.apple.nsurlsessiond/Downloads/com.application.tre/com.application.tre 

Qualcuno può aiutare a trovare il percorso del file scaricato o gestire tali scenari? Ho fatto delle ricerche per trovare una soluzione, ma non è stato possibile trovare

+0

Sto cercando di scaricare più video alla volta. se l'applicazione è chiusa e aperta e segue la stessa cosa ancora una volta il download della posizione è erroneamente condiviso nel metodo delegato dell'attività di download - (void) URLSession: (NSURLSession *) sessione downloadTask: (NSURLSessionDownloadTask *) downloadTask didFinishDownloadingToURL :(NSURL *) posizione –

+0

puoi condividere il codice di salvataggio del percorso file – Mukesh

+0

Il problema è che il percorso del file temporaneo condiviso dal delegato stesso è errato. Il percorso condiviso è:/Users/sfm/Library/Developer/CoreSimulator/Devices/EB96B330-4928-422F-8655-DC0E9781014A/data/Containers/Data/Application/54691CE2-D599-41CA-813B-2A8FF7B868F8/Library/Caches/com.apple.nsurlsessiond/Downloads/com.application.tre/com.application.tre –

risposta

1

Durante il debug di un'app, da iOS8, i percorsi dei file cambiano ogni volta che si avvia una sessione di debug (almeno nel Simulatore).

Controllare l'identificativo dell'app nel percorso, a volte cambia quando si esegue il debug.

Dal iOS 8, si dovrebbe usare questo per fileURLs:

NSURL *documentsPath = [[[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] lastObject]; 

In setDownloadTaskDidFinishDownloadingBlock: Io lo uso per restituire il fileURL dove dovrebbe salvare il file:

return [documentsPath URLByAppendingPathComponent:fileName]; 

Per aprire il file:

NSURL *fileURL = [documentsPath URLByAppendingPathComponent:fileName]; 

Per eliminare il file:

NSURL *fileURL = [documentsPath URLByAppendingPathComponent:fileName]; 
NSError *error = nil; 
[[NSFileManager defaultManager] removeItemAtURL:fileURL error:&error]; 
Problemi correlati