2015-08-19 24 views
1

我正在嘗試使用swift代碼將vars傳遞給php並將響應傳回swift。這一切順利與下面的代碼。這只是一個簡單的代碼,讓事情繼續下去。它給了我正確的連接和結果,我怎麼會傳遞應該在數組中的數據,我猜想。但是當我嘗試通過數組中的更多數據發送時,我什麼都看不到。在PHP中,我會爆炸的結果,讓他們一個接一個,但我如何獲得負載的變量值,所以我可以再次使用它們?swift php數組swift json

下面

是我的代碼

<?php 
require('conn.php'); 
header('Content-type: application/json'); 
if($_POST) { 
    $database =trim ($_POST['database']); 
    $engine = trim($_POST['engine']); 


    $name = "William"; 


    $results = Array("name" => $name 
        ); 



    echo json_encode($results); 
}/*end if POST*/ 

?> 

這是SWIFT代碼

let data:NSString = ("bfdprofile" as NSString) 
      let engine:NSString = "account" as NSString 

      self.usernameLabel.text = prefs.valueForKey("USERNAME") as? String 




      let url = NSURL(string:"xxxxx.php") 
      let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData 
      var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 2.0) 
      request.HTTPMethod = "POST" 

      // set Content-Type in HTTP header 
      let boundaryConstant = "----------V2ymHFg03esomerandomstuffhbqgZCaKO6jy"; 
      let contentType = "multipart/form-data; boundary=" + boundaryConstant 
      NSURLProtocol.setProperty(contentType, forKey: "Content-Type", inRequest: request) 

      // set data 
      var dataString = "data=\(data)&engine=\(engine)" 
      let requestBodyData = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding) 
      request.HTTPBody = requestBodyData 

      // set content length 
      //NSURLProtocol.setProperty(requestBodyData.length, forKey: "Content-Length", inRequest: request) 

      var response: NSURLResponse? = nil 
      var error: NSError? = nil 
      let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error) 

      if let results = NSJSONSerialization.JSONObjectWithData(reply!, options: nil, error: &error) as? [String: String]{ 
      if let name = results["name"]{ 
       labelTestOutput.text = name as? String 
       } 
      } 

感謝您的幫助

回答

1

你可以把它異步Alamofire庫那樣簡單做:

typealias JSONdic = [String: AnyObject] 

let param = ["data": "somedata", "engine": "someEngine"] 

Alamofire.request(.POST, URLString: "xxxxx.php", parameters: param).responseJSON() { 
    (_,_,json,_) in 
    if let json = json as? JSONdic, name = json["name"] as? String { 
     // do something with name 
    } 
} 
+0

它已經工作的項目,所以我不知道如何將其添加到我的項目。我研究過這個。我的swiftyjson安裝在我的項目上。我可以使用它嗎? – carlosx2