SwiftからのGETリクエストをPHPで受け取る。PHPからSwiftへの受け渡し。
タイトルに書いたように今SwiftからのGETリクエストをcakePHPで受け取る。DB(MySQL)に登録してあるデータをcakePHPからSwiftにデータを送るような流れです。
< Swift >
let url = "送信するURL"
let request = NSMutableURLRequest(URL: NSURL(string:url)!)
request.HTTPMethod = "GET"
let task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler:{data, response, error in
print(data)
if(error == nil){
let result = NSString(data:data!,encoding:NSUTF8StringEncoding)!
//結果を出力(JSON形式)
print("result=\(result)")
}else{
print(error)
}
< PHP >
//DB接続
$db = mysql_connect('localhost', 'root', 'imagine');
$table = mysql_select_db('test_db')){
$table = mysql_query('SET NAMES UTF8')
//テーブルからデータを取り出す
$table = mysql_query("select id,name,password from users" , $db)
//レコードごとに配列を取得
while($row = mysql_fetch_assoc($table)){
//取得した配列を多次元配列にする。
$array[] = array($row);
//json形式でviewに吐く
$this->set(compact('array'));
$this->viewClass = 'Json';
$this->set('_serialize', array('array'));
Swift側で結果を出力する(print("result=\(result)")
)と、
{"array":[[{"id":"1","name":"My Name","password":"2015-09-29 06:21"}],[{"id":"2","name":"testuser1","password":"1111"}],[{"id":"3","name":"testuser2","password":"2222"}],[{"id":"4","name":"tomorrow","password":"1234"}],[{"id":"5","name":"tomorrow","password":"1234"}],[{"id":"6","name":"test","password":"1234"}],[{"id":"7","name":" the","password":"1234"}],[{"id":"8","name":" the","password":" 1234"}],[{"id":"9","name":" the","password":" the"}],[{"id":"10","name":" people","password":" the"}],[{"id":"11","name":" the","password":" people"}],[{"id":"12","name":" the","password":" I love the"}]]}
のようにJSON形式でSwiftのデバックエリアに表示するところまではできています。
しかし、ここから必要な配列の要素だけを表示することができていません。
SwiftyJSONを使って要素を取得することも試してみました。
do{
var data = try NSURLConnection.sendSynchronousRequest(request, returningResponse: nil)
}catch{
print("ERROR")
}
if data != nil {
let json = JSON(data: data!)
print(json)
}
if let title = json["array"][0]["id"].string {
print(title)
}else{
print("failed")
}
print(json)の結果、print(title)の結果はどちらもnullになってしまいます。
どなたかお力を貸していただけると幸いです。
説明不足でしたら、随時補足いたします。
よろしくお願いします。