Nov 5, 2015 GitHubのEvents APIでは、イベントの種類に応じて一部のJSONの構造が変わります。構造が可変となっているのはpayloadと呼ばれる箇所で、種類に固有の情報はpayload以下に格納されます。例えば、CommitCommentEventのpayloadはcomment, senderといった情報を持ち、CreateEventやDeleteEventはref, ref_typeといった情報を持ちます。 https://developer.github.com/v3/activity/events/types/ SwiftでEvents APIのレスポンスを表そうと考えた場合、以下の2つが思い浮びました。 Eventという1つの型を定義してpayloadは[String: AnyObject]にする。 EventTypeというプロトコルを定義して種類ごとに
![Value binding patternを活用して可変な構造を持つレスポンスを型安全に扱う方法](https://cdn-ak-scissors.b.st-hatena.com/image/square/48da192f3c84c8024b901bd6e52fd552dce0c935/height=288;version=1;width=512/https%3A%2F%2Fblog.ishkawa.org%2Fassets%2Fmisc%2Fblank.png)