Swiftで、Webサーバに
データを送信・登録しよう!
Swiftビギナーズ倶楽部 第9回
Self-Intoroduction
徳島県出身です
(ó `o) 一緒に勉強しましょう( ́ ▽ ` )ノ
勉強会やってます!
アプリケーションエンジニア(Rails/LAMP/Java/Oracle)
アウトプットを主軸においた、勉強会を運営しています:)
Click
What do you want to do?
iOSアプリから、サーバのデータを
取得して表示したい!
iOSアプリから、サーバにデータを
送信してDBに登録したい!
どんなアプリなのか見てみましょう!
2)JSONを取得してみよう!
Today's Agenda
3)サーバのDBに、データを登録してみよう!
1)Alamofireをインストールしよう!
Server:Sinatra + SQLite3
Development Environments
Applicaiton:Xcode Version 6.4
1)Alamofireをインストールしよう!
https://github.com/Alamofire/Alamofire
1)Alamofireをインストールしよう!
解凍した「Alamofire-master」フォルダを
プロジェクトフォルダ直下に保存します。
1)Alamofireをインストールしよう!
ドラッグ
「Alamofire.xcodeproj」を
 ドラッグします。
1)Alamofireをインストールしよう!
1)Alamofireをインストールしよう!
この手順「世界一受けたい
iPhoneアプリ開発の授業」
にも記載されています(*´∀`*)
1)Alamofireをインストールしよう!
Alamofireを、importすれば準備OK!
こんなエラーが出たらビルドしてみよう!
2)JSONを取得してみよう!
取得したJSONを表示させるラベルを作成します。
(制約は自由につけてください。)
2)JSONを取得してみよう!
ラベルを選択して、「ViewController」にドラッグします。
「Name」に好きな名前をつけてください。
他はそのままで「Connect」をクリック。
2)JSONを取得してみよう!
request関数
Alamofire には、HTTP通信を行うRequestクラスが用意されています。
通常のGETリクエスト(パラメータなし)
Alamofire.request(.GET, “http://localhost”)
Alamofire.request(.GET, http://localhost ).responseJSON
{(request, response, json, error) in
  // 処理
}
非同期でのGETリクエスト(パラメータなし)
2)JSONを取得してみよう!
起動時に、サーバから非同期でデータを取得して表示させてみます。
@IBOutlet weak var titleLabel: UILabel!
/*
* メッセージを表示する処理
* サーバから、メッセージを取得します。
*/
override func viewDidLoad() {
super.viewDidLoad()
// 通常のGetリクエスト
//Alamofire.request(.GET, requestUrl)
// 非同期のGetリクエスト
Alamofire.request(.GET, requestUrl).responseJSON
{(request, response, json, error) in
let jsonDic = json as! NSDictionary
let responseData = jsonDic["responseData"] as! NSDictionary
self.titleArray = responseData["results"] as! NSArray
self.titleLabel.text = self.titleArray[0]["title"] as? String
self.messageLabel.text = self.titleArray[0]["message"] as? String
}
}
2)JSONを取得してみよう!
サーバ側の処理は、シンプルにJSON返すだけです。
2)JSONを取得してみよう!
シミュレーターを起動して確認してみると、、、とれた( )
3)サーバのDBに、データを登録してみよう!
入力フィールドと、送信ボタンを配置します。
(Text Field:Outlet、Button:Actionで紐付けてください。)
request関数
第一引数ではGET, POST などの HTTPメソッドを指定できます。
Alamofireでは、次の9つの値が宣言されています。
public enum Method: String {
case OPTIONS = "OPTIONS"
case GET = "GET"
case HEAD = "HEAD"
case POST = "POST"
case PUT = "PUT"
case PATCH = "PATCH"
case DELETE = "DELETE"
case TRACE = "TRACE"
case CONNECT = “CONNECT"
}
3)サーバのDBに、データを登録してみよう!
送信ボタンをタップ時に、サーバデータを送信してDBに登録します。
/*
* メッセージを保存する処理
* サーバに、メッセージを送信します。
*/
@IBAction func sendMessage(sender: AnyObject) {
let parameters = ["comment": self.inputText.text]
Alamofire.request(.POST, "http://localhost/new", parameters: parameters)
}
3)サーバのDBに、データを登録してみよう!
2)JSONを取得してみよう!
サーバ側の処理は、こんな感じ。
DEMO
実際にやってみましょう!
アプリケーションプログラム
https://github.com/mustacheyork/tickleApp
サーバプログラム
https://github.com/mustacheyork/tickle_serve
ま と め
Alamofireは、HTTP通信が簡単に実装できるOSSです。
・request、response以外にも、download、upload関数が
 用意されています。
・レスポンスデータの取得・送信状況をリアルタイムに表示
 したい場合は、progressメソッドが用意されています。
・また、validateメソッドもあったりして、とても便利です。
参考書籍
Click
とても丁寧で、分かりやすい書籍です!
アプリ開発の楽しさが体験できる
とてもよい書籍でお薦めです( ́ ▽ ` )ノ
Let's study together!
Thank you :)

Swiftで、Webサーバにデータを送信・登録しよう!