LoginSignup
0
0

More than 5 years have passed since last update.

URLSessionにつまづく

Last updated at Posted at 2017-11-12

オリジナルクラスでURLSession周りにつまづく

全てを事前準備されたViewControler.swiftで完了する時は楽だった。つまるところ密結合は楽だった。

JSON形式データのダウンロードは共通要素

NASA APIは複数のAPIが用意されているけれど、「API URLを指定してJSON形式データのダウンロード」はいずれも変わらない。

なので、API URLを引数にJSON形式データを戻り値にした関数(または類似の分け方)を作ろうと考える。

URLSessionDownloadDelegateで怒られる

試しと新規classを作成してURLSessionDownloadDelegateを付ける。

class TestClass: URLSessionDownloadDelegate {
}

すると、

Type 'TestClass' does not conform to protocol 'NSObjectProtocol' Do you want to add protocol stubs?

と怒られる。Fixボタンをクリックすると、大量のfuncが追加されて1つ1つがわからなかった。

参考にさせていただいたページでは、これらのfuncが無くても大丈夫そうなので、わたしの書き方に不足があるのだろう。

非同期処理はイメージが難しい

基本的にプログラムは上から順に流れることしかしてこなかった。非同期処理は終わらずに次々進んでいってしまうことから、順番にこなした時は監視する必要があるのだろうか。

URLSessionでタスク開始時、進行中、終了時のそれぞれで呼び出されるfuncが用意されている。しかしこの間、URLSessionに処理を要求した側は、タスク終了を待って進む必要がある時は、タスク終了を監視するのだろうか。

最初から一気に外部クラス・外部関数に分けるのではなく、結合度を気にせず動くものを作ってから、少しずつ結合度を下げるのが身の丈に合ってるか。

環境

  • Xcode Version 9.1 (9B55)
  • Swift version 4.0.2
  • macOS歴 一ヶ月弱

いつからSwiftが4.xになっていたのだろう。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0