Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 481 - Webからデータをダウンロード(NSURLSession)

iOS9になりNSURLConnectionはDeprecated(不使用)になりました! 昨年までは、ネットで調べてもチュートリアルに取り組んでもNSURLConnectionの情報で溢れていたので振り回されたあげく、不使用になってしまい全く必要のない知識になってしまうとは!。

ということで、NSURLConnectionにとってかわるNSURLSessionクラスをもう少ししっかり理解しなければと思いネットを調べてみてもなかなかいい情報がありません。

Webからデータをダウンロードするために理解しなければならないクラスは、NSURLSessionですが、本当に基本的なことを知らない自分ウンザリします。だいたいWebからダウンロードする方法に2種類あることさえ知りませんでした。

「同期ダウンロード」と「非同期ダウンロード」の扱いを理解しなければなりません。

まず「同期ダウンロード」から考えます。

ダウンロードの開始、データのチェック、その後の処理を全て1つの流れてして処理していくため途中で他の処理をこなせません。単純な処理なので実装も単純です。しかし、サイズの大きなファイルをダウンロードする場合、ユーザーに要らぬ待ち時間を取らせてユーザビリティを低下させます。

というか、「同期ダウンロード」の実装法を知る必要があるのだろうか?

「非同期ダウンロード」は、データのダウンロードの途中でもユーザーのリクエストに応えて他の作業を別ススレッドで実行することができて、ダウンロードした時点で終了を受け取りデータを解析するというやり方です。

f:id:yataiblue:20151029225718j:plain

外部とのデータのやり取りは「非同期」で管理することが基本になるだろう。しかし、時間がかかる複数のファイルのダウンロードの場合、進捗状況をユーザーに知らせる機能を組み込まないとユーザー・エクスペリエンスは最低になってしまいます。

そこでNSProgressも重要になります。このクラスは複数ファイルのダウンロードをモニタリングして通知する機能なので必ず習得する必要があるだろう。

ファイルをダウンロードするだけでも色々知っておかなければならない、ということを知って勉強していこう。

おしまい。