Permalink
Browse files

Web API へのリクエスト処理を追加

  • Loading branch information...
1 parent 26eb3a8 commit 5b67d410c4e267f4fd8840f4a62e4595b858617d @kzytateishi committed Mar 25, 2015
Showing with 57 additions and 5 deletions.
  1. +4 −0 APIDemo/APIDemo.xcodeproj/project.pbxproj
  2. +31 −0 APIDemo/APIDemo/Router.swift
  3. +22 −5 APIDemo/APIDemo/ViewController.swift
@@ -15,6 +15,7 @@
8593AE031AC2E3ED00305B8B /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8593AE011AC2E3ED00305B8B /* LaunchScreen.xib */; };
8593AE0F1AC2E3ED00305B8B /* APIDemoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8593AE0E1AC2E3ED00305B8B /* APIDemoTests.swift */; };
8593AE1A1AC2E57A00305B8B /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8593AE191AC2E57A00305B8B /* User.swift */; };
+ 8593AE1C1AC2E63E00305B8B /* Router.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8593AE1B1AC2E63E00305B8B /* Router.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -42,6 +43,7 @@
8593AE0D1AC2E3ED00305B8B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
8593AE0E1AC2E3ED00305B8B /* APIDemoTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIDemoTests.swift; sourceTree = "<group>"; };
8593AE191AC2E57A00305B8B /* User.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = "<group>"; };
+ 8593AE1B1AC2E63E00305B8B /* Router.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Router.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -110,6 +112,7 @@
8593ADFF1AC2E3ED00305B8B /* Images.xcassets */,
8593AE011AC2E3ED00305B8B /* LaunchScreen.xib */,
8593ADF61AC2E3ED00305B8B /* Supporting Files */,
+ 8593AE1B1AC2E63E00305B8B /* Router.swift */,
);
path = APIDemo;
sourceTree = "<group>";
@@ -298,6 +301,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 8593AE1C1AC2E63E00305B8B /* Router.swift in Sources */,
8593ADFB1AC2E3ED00305B8B /* ViewController.swift in Sources */,
8593ADF91AC2E3ED00305B8B /* AppDelegate.swift in Sources */,
8593AE1A1AC2E57A00305B8B /* User.swift in Sources */,
@@ -0,0 +1,31 @@
+//
+// Router.swift
+// APIDemo
+//
+// Created by Kazuya Tateishi on 2015/03/25.
+// Copyright (c) 2015年 kzy52. All rights reserved.
+//
+
+import Foundation
+
+import Alamofire
+
+enum Router: URLRequestConvertible {
+ static let baseURLString = "http://localhost:3000"
+
+ case GetUsers()
+
+ var URLRequest: NSURLRequest {
+ let (method: Alamofire.Method, path: String, parameters: [String: AnyObject]?) = {
+ switch self {
+ case .GetUsers: return (.GET, "/api/v1/users", nil)
+ }
+ }()
+
+ let URL = NSURL(string: Router.baseURLString)!
+ let URLRequest = NSURLRequest(URL: URL.URLByAppendingPathComponent(path))
+ let encoding = Alamofire.ParameterEncoding.URL
+
+ return encoding.encode(URLRequest, parameters: parameters).0
+ }
+}
@@ -7,6 +7,7 @@
//
import UIKit
+import Alamofire
// UITableViewを使用する際はUITableViewDataSourceプロトコルとUITableViewDelegateプロトコルを実装する必要がある
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@@ -39,6 +40,10 @@ class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSour
self.view.addSubview(self.tableView!)
}
+ override func viewWillAppear(animated: Bool) {
+ self.request()
+ }
+
// セルの総数を返す(表示するテーブルの行数)
// UITableViewDataSource を使う場合は 必須
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
@@ -58,11 +63,23 @@ class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSour
return cell
}
- // 行が選択された際の処理
- func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath) {
- let user = self.users[indexPath.row] as User
- // 行選択された際にログにメールアドレスを表示してみる
- println(user.email);
+ // Web API をコールする
+ func request() {
+ Alamofire.request(Router.GetUsers()).responseJSON { (request, response, json, error) -> Void in
+ if let json = json as? Array<Dictionary<String,AnyObject>> {
+ for j in json {
+ var user: User = User(
+ name: j["name"] as NSString,
+ email: j["email"] as NSString
+ )
+ self.users.set(user)
+ }
+
+ dispatch_async(dispatch_get_main_queue(), {
+ self.tableView!.reloadData()
+ })
+ }
+ }
}
override func didReceiveMemoryWarning() {

0 comments on commit 5b67d41

Please sign in to comment.