以下の php を Alamofire で Swift 側から呼び出して、レスポンスを受け取った際に response.result が空になっています。
試しに response.data という形で受け取ると Json の文字列を受け取る事ができています。
また、直接ブラウザから php を叩くと DB からの値の取得は成功しているようです。
① response.result が何故空になってしまうのはなぜでしょうか?
② 検索してブログなどをみると response.result.value という形で受け取る例しか出てこない事から response.result.value を使うのが一般的という認識で良いでしょうか?
③ また、Jsonを受け取った後にパースする方法も教えていただけたら幸いです。
よろしくお願いします。
Swift
1 let todosEndpoint: String = "/getUser.php" 2 Alamofire.request(todosEndpoint, method: .get, encoding: JSONEncoding.default).responseJSON { response in 3 if let data = response.result.value{ 4 // Response 5 if (data as? [[String : AnyObject]]) != nil{ 6 print("id: (data)") 7 } 8 } 9 }
PHP
1<?php 2 try { 3 try { 4 $pdo = new PDO('----','----','----', 5 array(PDO::ATTR_EMULATE_PREPARES => false)); 6 } catch (PDOException $e) { 7 exit('データベース接続失敗。'.$e->getMessage()); 8 echo "データベース接続失敗"; 9 } 10 11 $sql = "SELECT * FROM user ORDER BY id ASC"; 12 $stmt = $pdo->query($sql); 13 while ($row = $stmt->fetch(PDO::FETCH_BOTH)) { 14 $kekka[] = array( 15 "id"=>$row[0], 16 "userName"=>$row[1], 17 "age"=>$row[2]); 18 } 19 header('Content-type: application/json'); 20 echo json_decode($kekka); 21 22 } catch (PDOException $e) { 23 echo 'ERROR:'.$e->getMessage(); 24 die(); 25 } 26?>
あなたの回答
tips
プレビュー