はじめに
RailsでJSON Apiを作成したので、そこと通信をするiOSアプリをSwiftで作ることになりました。
以前はHTTP通信部分にNSURLSessionやAFNetworkを使っていましたが、今回はSwiftで書かれたAlamofireを使って見ることにしました。
JSONのSerializeにはNSJSONSerializationを使っていたところを、SwiftyJSONを使ってみることにしました。
やったこと
とりあえずテストとしてAppDelegate.swiftあたりに書いてみました。
import UIKit
import Alamofire
import SwiftyJSON
・
・
・
Alamofire.request(.GET, "http://foo.com/api/v1/bar/1", parameters: ["foo": "bar"])
.response { (request, response, data, error) in
println(request)
println(response)
}
.responseJSON { (_, _, json_data, _) in
println(json_data)
let json = JSON(json_data!)
println(json)
println(json["bar"])
println(json["bar"]["hoge_id"])
}
}
}
request
<NSMutableURLRequest: 0x7fab3b28b720> { URL: http://foo.com/api/v1/bar/1?foo=bar }
response
Optional(<NSHTTPURLResponse: 0x7fab38d60bc0> { URL: http://foo.com/api/v1/bar/1?foo=bar } { status code: 200, headers {
・
・
"Cache-Control" = "max-age=0, private, must-revalidate";
Connection = "keep-alive";
"Content-Type" = "application/json; charset=utf-8";
・
・
・
} })
json_data
Optional({
bar = {
"created_at" = "2015-07-01T12:25:41.438+09:00";
id = 1;
"updated_at" = "2015-07-01T12:25:41.438+09:00";
"hoge_id = 1"
};
})
json
{
"bar" : {
"id" : 1,
"created_at" : "2015-07-01T12:25:41.438+09:00",
"updated_at" : "2015-07-01T12:25:41.438+09:00",
"hoge_id" : 1
}
}
json["bar"]
"id" : 1,
"created_at" : "2015-07-01T12:25:41.438+09:00",
"updated_at" : "2015-07-01T12:25:41.438+09:00",
"hoge_id" : 1
json["bar"]["hoge_id"]
1
まとめ
今回はとても単純な例ですが、今までよりもとても直感的に使えそうです。
複雑な操作は今後。