php - Retrieving json object into xCode comes with a nil value always -


i trying json connection sql. php file working fine. writes , retrieves when test directly.

but on xcode can write. when try json object come nil. error goes bellow. idea be?

nsurlsession error - nil nsurlsession data - <0a0a3264 36663234 37323334 37383135 65313633 33653764 30383233 34626231 34346262 61653830 3637436f 6e6e6563 74656420 746f2064 61746162 6173656c 6f63616c 686f7374 6c6f6361 6c686f73 74537769 66744170 707b2273 74617475 73223a22 34303022 2c226d65 73736167 65223a22 506c6561 73652063 686f6f73 65206469 66666572 656e7420 656d6169 6c206164 64726573 73227d>

json dictionary - nil

json error - error domain=nscocoaerrordomain code=3840 "the operation couldn’t completed. (cocoa error 3840.)" (json text did not start array or object , option allow fragments not set.) userinfo=0x7f8e88a44d40 {nsdebugdescription=json text did not start array or object , option allow fragments not set.}

import uikit  class signupviewcontroller: uiviewcontroller {      @iboutlet weak var useremailaddresstextfield: uitextfield!     @iboutlet weak var userpasswordtextfield: uitextfield!     @iboutlet weak var userrepeatpasswordtextfield: uitextfield!     @iboutlet weak var userfirstnametextfield: uitextfield!     @iboutlet weak var userlastnametextfield: uitextfield!       override func viewdidload() {         super.viewdidload()          // additional setup after loading view.     }      override func didreceivememorywarning() {         super.didreceivememorywarning()         // dispose of resources can recreated.     }      @ibaction func cancelbuttontapped(sender: anyobject) {          self.dismissviewcontrolleranimated(true, completion: nil)      }       @ibaction func signupbuttontapped(sender: anyobject) {          let useremail = useremailaddresstextfield.text         let userpassword = userpasswordtextfield.text         let userpasswordrepeat = userrepeatpasswordtextfield.text         let userfirstname = userfirstnametextfield.text         let userlastname = userlastnametextfield.text  //        if (userpassword != userpasswordrepeat){ //             //            self.displayalertmessage("password not match") //             //        } //         //        if (useremail.isempty || userpassword.isempty || userfirstname.isempty || userlastname.isempty){ //             //            self.displayalertmessage("all fields required") //             //        }           let myurl = nsurl(string: "http://localhost/swiftappandmysql/scripts/registeruser.php")         let request = nsmutableurlrequest(url: myurl!)          //let poststring = "useremail=\(useremail)&userpassword=\(userpassword)&userfirstname=\(userfirstname)&userlastname=\(userlastname)"          let poststring = "useremail=8&userpassword=90&userfirstname=890&userlastname=809"          request.httpmethod = "post"         request.httpbody = poststring.datausingencoding(nsutf8stringencoding)          nsurlsession.sharedsession().datataskwithrequest(request, completionhandler: { (data: nsdata!, response: nsurlresponse!, error: nserror!) -> void in               println("nsurlsession error - \(error)")              println("nsurlsession data - \(data)")              dispatch_async(dispatch_get_main_queue())             {                  if error != nil {                 self.displayalertmessage(error.localizeddescription)                 return                 }                   var err:nserror?                  var json = nsjsonserialization.jsonobjectwithdata(data, options: nsjsonreadingoptions.mutablecontainers, error: &err) as? nsdictionary                  println("json dictionary - \(json)")                 println("json error - \(err!)")                 println("json data - \(data)")                   if let parsejson = json{                       var userid = parsejson["userid"] as? string                      println(userid)                       if (userid != nil){                          let alertcontroller = uialertcontroller(                             title: "bam!",                             message: "registration sucessful",                             preferredstyle: uialertcontrollerstyle.alert)                          let okaction = uialertaction(                             title: "ok",                             style: uialertactionstyle.default){                             (action) in                              self.dismissviewcontrolleranimated(true, completion: nil)                         }                          alertcontroller.addaction(okaction)                          self.presentviewcontroller(alertcontroller, animated: true, completion: nil)                     }                      else{                              let errormessage = parsejson["message"] as? string                             if (errormessage != nil){                                 self.displayalertmessage(errormessage!)                             }                         }                     }                 }          }).resume()        }       func displayalertmessage (message: string){          let alertcontroller = uialertcontroller(title: "bam!", message: message, preferredstyle: uialertcontrollerstyle.alert)          let okaction = uialertaction(title: "ok", style: uialertactionstyle.default, handler: nil)          alertcontroller.addaction(okaction)          self.presentviewcontroller(alertcontroller, animated: true, completion: nil)      }   } 

php script using

<?php  //use mysqldao;  require ("../db/mysqldao.php"); $config = parse_ini_file('../db/swiftapp.ini');  $returnvalue = array();  if (         empty($_request["useremail"]) ||         empty($_request["userpassword"]) ||         empty($_request["userfirstname"]) ||         empty($_request["userlastname"])) {      $returnvalue["status"] = "400";     $returnvalue["message"] = "missing required information";     echo json_encode($returnvalue);      return; }  $useremail = htmlentities($_request["useremail"]); $userpassword = htmlentities($_request["userpassword"]); $userfirstname = htmlentities($_request["userfirstname"]); $userlastname = htmlentities($_request["userlastname"]);  $salt = openssl_random_pseudo_bytes(16); $secure_password = sha1($userpassword . $salt); //http://localhost/swiftappandmysql/scripts/registeruser.php?useremail=email&userpassword=123456&userfirstname=gui&userlastname=maia echo $secure_password;  //connect using .ini $dbhost = trim($config["dbhost"]); $dbuser = trim($config["dbuser"]); $dbpassword = trim($config["dbpassword"]); $dbname = trim($config["dbname"]); $dao = new mysqldao($dbhost, $dbuser, $dbpassword, $dbname);    $dao->openconnection();  echo $dao->dbhost; echo $dao->dbname;  $userdetails = $dao->getuserdetails($useremail);  if(!empty($userdetails)) {     $returnvalue["status"] = "400";     $returnvalue["message"] = "please choose different email address";     echo json_encode($returnvalue);     return; }  $result = $dao->registeruser($useremail, $userfirstname, $userlastname, $secure_password, $salt);  if ($result) {     $userdetails = $dao->getuserdetails($useremail);     $returnvalue["status"] = "200";     $returnvalue["message"] = "sucessfully registered new user";     $returnvalue["userid"] = $userdetails["user_id"];     $returnvalue["userfirstname"] = $userdetails["first_name"];     $returnvalue["userlastname"] = $userdetails["last_name"];     $returnvalue["useremail"] = $userdetails["email"];  } else {     $returnvalue["status"] = "400";     $returnvalue["message"] = "could not register user provided information"; }  $dao->closeconnection();  echo json_encode($returnvalue);   ?> 

the data in string format was:

2d6f2472347815e1633e7d08234bb144bbae8067connected databaselocalhostlocalhostswiftapp{"status":"400","message":"please choose different email address"} 

which not valid json structure. have part surrounded {} (and including {}) before can cast json dictionary.


Comments