GitHubAlamofireで楽にネット上のAPIへアクセスできた後は楽に結果を処理したい。APIの戻りはJSONのことが多いですから、JSONが楽に処理できれば様々なことが捗ります。そこで探すと、このSwiftyJSONを見つけました。このGithubのグループはAlamofireと密接にインテグレーションしたものもサブプロジェクトとして用意しています。}}Alamofire-SwiftJSONで書いて実行するとこんな感じ。Facebookから顔写真とカバー写真とローカル表記の名前を取ってきて、UITableViewにセル表示してみます。言いたいことはヤマほどあるんだけどなんですか?このFacebookの細切れ呼び出しは。一発でカバー写真のURLとローカル表記名をくださいよ。/UID?fields=coverでURLを取得してからやっとイメージが取れる、/UIDでLocaleを取得してから/UID?locale=LOCALEでやっとローカル表記名が取れるって。これらを一発でまとめてくれていれば上記で全体5回APIを叩いてるところが3回にできるのに。そのストレスを補ってあまりあるのがSwiftyJSONの簡潔な記述です。Alamofire-SwiftyJSONではextensionでAlamofireのRequestを拡張していますので、スムーズにRequest#responseSwiftyJSONを呼び出すことで、クロージャにSwiftyJSONのJSON型が受け取れます。コレをDictionaryやArrayとしてアクセスしてあげれば良いのです。先日はこんなことしてましたからね(こちらはSLRequestなんで違いますけど、やることは全く一緒です)。IDとアクセストークンを取得する。StringSwiftyJSONのコード見るとまたスマートに実現してんだわ。Swiftのsubscriptという配列アクセッサを再定義する仕組みでJSONの構造を直感的に辿ることができます。最終的に値が欲しい時には#stringValueなどの型別プロパティで取り出します。これだけ直感的に省力で書けるのはホント楽。楽に書く一連の中でSwift言語での二つの省略を学びました。いうように丸括弧を省略して代わりに中括弧が置かれたかのよう。これは引数リスト最後のクロージャは外に出せるというのと、デフォルト値が設定された引数は省略できるというのと、結果として引数が無いときは空の引数リストを省略できる、というのの組み合わせ。シンプルで素敵クロージャの引数で使わないものはアンダースコアで受けることができる。これはGo言語でそうだったようにコードの可読性あげるために効果あるので素敵。Goは変数宣言して使わないとコンパイルエラーという徹底が前提にありましたが、残念ながらSwiftにはそこまでは無い。いつものようにサンプルでは例外処理ゼロです。この場合の例外処理ですが確実に抑えないとアプリ吹っ飛ぶので絶対必要です。Swifty)はきちんと呼べますが第三引数のdataがnilなため、クロージャ内で想定した対応しないとEXC_BAD_ACCESSで吹っ飛ぶ。Alamofire-SwiftyJSONではnilではなく空のJSONが例外時にも約束されてるのでその辺はまだ便利ですが、クロージャの第四引数のerrorを常にnilで潰しているので、JSONパース前に例外があったとしても伝播しないです。よって第三引数のjsonの中身を調べながら進める必要があります。なによりFacebookのAPIがエラー発生時にはその旨をJSONにして正常に返してきますので正常系の中で異常対応しないといけません。その辺まとめて先に作っておいたほうがよいですね。それこそextensionで。v5へ一昨日、昨日の続きです。react-routerをv4へマイグレーション...2015-11-06SuperAgentとMulterでファイルアップロードファイルアップロードの機能を作るのに、二日ハマりました。Technology(米国)はてなブログをはじめよう!masataka_kさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。