Odpowiedz

43

NSURLSessionDataTask: Zadania danych wymiany danych przy użyciu NSData. NSURLSessionDataTask nie jest obsługiwany w sesjach w tle.

Zadania danych wysyłają i odbierają dane za pomocą obiektów NSData. Zadania danych są przeznaczone dla krótkich, często interaktywnych żądań z Twojej aplikacji na serwer. Zadania danych mogą zwracać dane do aplikacji po jednym kawałku po otrzymaniu każdej z nich lub od razu za pośrednictwem procedury obsługi zakończenia. Ponieważ zadania danych nie przechowują danych w pliku, nie są obsługiwane w sesjach w tle.

NSURLSessionDownloadTask: NSURLSessionDownloadTask bezpośrednio zapisuje dane odpowiedzi do pliku tymczasowego. Obsługuje pobieranie w tle, gdy aplikacja nie jest uruchomiona.

Pobieranie zadań pobiera dane w postaci pliku i obsługuje pobieranie w tle, gdy aplikacja nie jest uruchomiona.

Chyba pod obrazem daje większą wiedzę:

enter image description here

+0

I wreszcie woleli użyć 'NSURLSessionDownloadTask' jak możemy mieć dodatkowe funkcje z nim .. – NSPratik

+0

* Ponieważ zadania danych nie zapisywać dane do pliku * co to oznacza ?! Nie przechowują go do pliku ?! Więc gdzie jest przechowywane? Co oznacza forma pliku? Czuję, że to jest sedno twojej odpowiedzi, która ma jakiś inny warunek wstępny, którego nie rozumiem. Być może jeśli podzielisz się przykładami z prawdziwego świata, zrozumienie stanie się łatwiejsze ... – Honey

16

Docs odpowiedzieć na to pytanie, ale:

  • NSURLSessionDownloadTask pobrań plików na dysku, a następnie zapisać plik wynikowy gdzieś użyć później.
  • NSURLSessionDataTask pliki do pobrania w pamięci, a od Ciebie zależy, jak chcesz obsłużyć odpowiedź.
3

dodając do powyższej odpowiedzi

  • NSURLSessionDownloadTask Jest możliwe, aby anulować zadanie pobierania i wznowić ją na później punkt.

  • NSURLSessionDataTask Nie możemy wznowić go na później.

0

możemy dostać go od plików nagłówkowych

/* * NSURLSessionDataTask nie przewiduje żadnych dodatkowych * funkcjonalność nad NSURLSessionTask a jego obecność jest po prostu * dostarczenie leksykalny różnicowanie od pobrania i ładuj zadania.*/

@interface NSURLSessionDataTask : NSURLSessionTask 
@end 

/* * NSURLSessionUploadTask obecnie nie dostarczają żadnych dodatkowych * funkcjonalność nad NSURLSessionDataTask. Wszystkie delegowane wiadomości *, które mogą być wysyłane, odwołując się do parametru NSURLSessionDataTask, w równym stopniu stosują * do NSURLSessionUploadTasks. */

@interface NSURLSessionUploadTask : NSURLSessionDataTask 
@end 

/* * NSURLSessionDownloadTask jest zadaniem, które stanowi odsyłacz do * pamięci lokalnej. */

@interface NSURLSessionDownloadTask : NSURLSessionTask 
Powiązane problemy