ios - How to handle JSON returned from HTTP GET request - Swift? -


this code :

        let myurl = nsurl(string:"hostname/file.php");      let request = nsmutableurlrequest(url:myurl!);     request.httpmethod = "get";       nsurlsession.sharedsession().datataskwithrequest(request, completionhandler: { (data:nsdata?, response:nsurlresponse?, error:nserror?) -> void in          dispatch_async(dispatch_get_main_queue())             {                    if(error != nil)                 {                     //display alert message                      return                 }                    {                     let json = try nsjsonserialization.jsonobjectwithdata(data!, options: .mutablecontainers) as? nsdictionary                      if let parsejson = json { /* when app reach here , enter catch , out */                          let userid = parsejson["id"] as? string                         print(userid)                          if(userid != nil)                          {                              nsuserdefaults.standarduserdefaults().setobject(parsejson["id"], forkey: "id")                             nsuserdefaults.standarduserdefaults().setobject(parsejson["name"], forkey: "name")                              nsuserdefaults.standarduserdefaults().synchronize()                           } else {                             // display alert message                                 print("error")                          }                      }                 } catch                 {                     print(error)                 }           }        }).resume() 

my app getting json php file parse array database json , return using echo , return following 2 rows :

[{"id":"1","name":"cit","adminstrator_id":"1"},{"id":"2","name":"helpdesk","adminstrator_id":"1"}] 

when print description of json nil

i tried cast json nsarray , when print first json[0] first row when tried cast result of json[0] nsdictionary still i'll nil

when app reach if statement if let parsejson = json enter catch , it's not printing error , don't know why ?

this php code :

    <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "mydb"; // create connection $conn = new mysqli($servername, $username, $password, $dbname); // check connection if ($conn->connect_error) {     die("connection failed: " . $conn->connect_error); }  $sql = "select * department"; $result = $conn->query($sql); $rows = array(); if ($result->num_rows > 0) {     // output data of each row     while($r = $result->fetch_assoc()) {         $rows[] = $r;     }     $conn->close();     echo json_encode($rows); } else {     $conn->close();     echo "0 results"; } ?> 

so problem in request or handling request ?

the json array of [string:string] dictionaries.

in json string [] represents array , {} represents dictionary.

an urlrequest not needed because get default mode. .mutablecontainers not needed either because values read.

consider json returns multiple records. code prints values id , name.

let myurl = nsurl(string:"hostname/file.php")! nsurlsession.sharedsession().datataskwithurl(myurl) { (data, response, error) in   if error != nil {     print(error!)   } else {     {       if let json = try nsjsonserialization.jsonobjectwithdata(data!, options: []) as? [[string:string]] {         entry in json {           if let userid = entry["id"], name = entry["name"] {             print(userid, name)           }         }       } else {         print("json not array of dictionaries")       }     } catch let error nserror {       print(error)     }   } }.resume() 

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -