swift:プロトコル、デリゲート、optional funcってなんだ?

相変わらず、alamofire4のHTTP通信でつまづいていますが、

根気強く調べて解決していこうと思います。

 

まずは、

Alamofire.uploadを使えばPOST通信ができるらしい。

Alamofire/Alamofire 4.0 Migration Guide.md at master · Alamofire/Alamofire · GitHub

(サイト内をpostで検索)

 

ということでswiftコードを書いてみると、

コンパイルエラー発生。

cannot invoke'upload' with an argument list of type 〜

ってやつで何言ってんだ。。。

ということでコンパイルエラー集を見てみたら、

どうやらこの引数じゃ関数を呼び出せねーよと言われている。

f:id:engineermasaru:20170409164921p:plain

 

Swiftのコンパイルエラー寄せ集め

ほうほう。

 

じゃあ「uploadってどんな引数があればいいの?」

ということで、エラーコードが出ているuploadに

マウスポインタを持っていって、

command+クリックでupload関数に飛びました。

f:id:engineermasaru:20170409164926p:plain

 

そしたらTaskConvertible?ってのがよくわからん。

ってことで、また

マウスポインタを持っていって、

command+クリックでTaskConvertible?にジャンプ。

 

するとこんな画面が。

f:id:engineermasaru:20170409165117p:plain

TaskConvertibleってプロトコルなのね。

 

。。。

 

プロトコルって何?

【Swift】プロトコルの使い方。クラスに実装しなけれならないプロパティ、メソッドを指定する。 | はじはじアプリ体験記

プロトコルとは、

クラスに実装するプロパティやメソッドを指定できる機能のこと。

 

じゃあ.swiftファイルの1番上に出てくる青いこれも

プロトコルなのね!!

f:id:engineermasaru:20170409165352p:plain

 

となるとUIPickerViewDelegateという名前のプロトコルに、

PickerViewを使う時のプロパティかメソッドが指定されてんのね!

 

f:id:engineermasaru:20170409165615p:plain

あれー?プロトコルで指定されているのに、

全部のメソッドを利用していないよねと気がついた。

 

optionalってのがついているのが理由か!?

ということでoptionalを調べる。

Swift におけるオプショナルなメソッドについて真面目に考える – NET BIZ DIV. TECH BLOG

やはり、実装必須のメソッドと実装しなくてもいいメソッドが

存在するらしいね。

今回の例でいうと、すべてがoptionalなメソッドなので、

実装しているメソッドと実装していないメソッドがあっても

正常に動作してくれるというわけなのか。