iOSアプリケーションでログインをすると、railsで作ったwebサーバから情報を引き出し、アプリケーションの画面で表示するといったものを作りたいと思っています。
今の開発進行状況は、railsでデータベースは作ることができています。
また、アプリケーションの方も既存のAPIから情報を引き出し表示することはできています。
?????????????????????????????????
railsサーバからどうやって、
iOSアプリケーションに表示したら良いのかわかりません。
????????????????????????????????
以下に作成したコードとその開発環境を記載しています。
エラーもまだ少し残っていますが…
どなたかお助けください!!!
よろしくお願いします。
開発環境
Ubuntuを使用してサーバを作成しています。
・ruby 2.3
・rails 5.0
・PostgreSQL
以下の画像のようなデータから、setaiと書かれている1や2のような番号のリクエストによって、testと書かれたSetai nameをアプリケーションに返したいです。
iOSアプリケーションはMacで開発しました。
・Xcode 8.2
・Swift 3
アプリケーションの画面とコードはこのようになっています。
Swift
1import UIKit 2 3class ViewController: UIViewController { 4 @IBOutlet weak var zipTextField: UITextField! 5 @IBOutlet weak var idLabel: UILabel! 6 @IBAction func tapReturn() { 7 } 8 @IBAction func tapSearch() { 9 guard let ziptext = zipTextField.text else { 10 // 値がnilだったら終了 11 return 12 } 13 // リクエストするURLを作る 14 //let urlStr = "http://api.zipaddress.net/?zipcode=\(ziptext)" 15 let urlStr = "http://168.192.l.l:3000/setai_master/index" 16 17 18 if let url = NSURL(string: urlStr){ 19 print("if in") 20 // urlオブジェクトがnilでなかったら、検索処理オブジェクトを作る 21 let urlSession = URLSession.shared 22 // 「検索処理が完了したら、onGetAddressを呼び出す」というタスクを作る 23 let task = urlSession.dataTask(with: url as URL, completionHandler: self.onGetAddress) 24 // タスクの実行 25 task.resume() 26 print("task start") 27 } 28 } 29 30 //検索処理が完了したら実行する 31 func onGetAddress(data: Data?,res: URLResponse?, error: Error?){ 32 // 受け取ったdataをJSON解析する。エラーになったらcatchへジャンプする 33 do{ 34 // dataのJSON解析実行 35 let jsonDic = try JSONSerialization.jsonObject(with: data!, options:JSONSerialization.ReadingOptions.mutableContainers ) as! NSDictionary 36 // 解析できた値を調べる 37 if let code = jsonDic["code"] as? Int{ 38 // codeという項目が整数ならAPIからコード情報 39 if code != 200{ 40 if let errmsg = jsonDic["message"] as? String{ 41 print(errmsg) 42 //dispatch_async(dispatch_get_main_queue()){ 43 DispatchQueue.main.async { 44 self.idLabel.text = errmsg 45 } 46 } 47 } 48 } 49 50 if let data = jsonDic["data"] as? NSDictionary{ 51 if let pref = data["pref"] as? String{ 52 print("世帯名は\(pref)です") 53 //dispatch_async(dispatch_get_main_queue()){ 54 DispatchQueue.main.async { 55 self.idLabel.text = pref 56 } 57 } 58 } 59 } catch { 60 print("エラー") 61 } 62 63 //確認のためdataを表示する 64 //print("確認用:") 65 print(data!) 66 } 67 68 override func viewDidLoad() { 69 super.viewDidLoad() 70 // Do any additional setup after loading the view, typically from a nib. 71 } 72 73 override func didReceiveMemoryWarning() { 74 super.didReceiveMemoryWarning() 75 // Dispose of any resources that can be recreated. 76 } 77 78 79}
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/27 04:05