Alamofireを使いこなすために基礎を勉強していくの巻

Alamofireの使い方がわからなかったんで、

teratailを使わせてもらって質問したら回答が返ってきた!

Swift - alamofire4を使ったクライアントからサーバへの通信のコードの書き方がわかりません。(71872)|teratail

 

 

f:id:engineermasaru:20170418231716p:plain

という回答が返ってきたが、

ちょっと知識不足ですぐには理解できなかった。

 

まず、

let json= 〜と書いてある行はディクショナリというもの。

キーと値で成立している。

ディクショナリ | Swift言語を学ぶ

 

次にlet data =〜

と書いてある行は、

NSKeyedArchiverクラスのarchivedDataというメソッドを利用して、

引数jsonをdata型にシリアライズしている。

NSKeyedArchiverクラス - Cocoa API解説(macOS/iOS)

 

swiftにおけるdata型とは、Objective-cにおけるNSData型のこと。

バイナリデータを扱う時に利用する型のようだ。

NSData - iPhoneアプリ開発の虎の巻

(通信するときは、

JSON形式で送信すれば楽だけど、

バイナリデータで送ったほうが処理速度は早いよ

ってエンジニアの先輩が言ってた。そりゃそうだわ。)

 

シリアライズとは、

オブジェクトをバイナリに変換すること

(ちなみに、バイナリからオブジェクトに変換することは、

シリアライズという)

iOS でオブジェクトをシリアライズしてファイルに保存する方法 - A Day In The Life

 

で、今つまづいてるのは、

archivedDataというメソッドにはどんな引数を

与えればいいのか?ということ

class func archivedData(withRootObject rootObject: Any) -> Data

Swift逆引きハンドブック Swift 3.0 対応

って書いてあるから

なんでもOKってことかな??

 

SwiftのAnyObjectとAnyの違い - Qiita

Anyは、関数型を含むすべての型のインスタンス

Anyobjectは、クラス型のインスタンス

なのでAnyのほうが汎用性は高いようだ。

 

[Swift]AnyObjectとAnyと総称型(T)の違いをメモったよ! - Qiita

おおお!この辺で総称型の説明にも関連付けができるが、

Alamofireを使う上では関係ないので、いったん勉強は保留。

目的はコード書いて、つくることだ!

また総称型を勉強する機会は訪れるだろう。