Post 字典从 Swift 到 PHP

Post dictionary from Swift to PHP

如何将在 Swift 中生成的字典作为参数发布到 PHP URL 中?

具体而言,任务是更新托管数据库上的许多字段。我没有将每个字段的新值定义为单独的参数,而是希望传递一个字典,其中键是字段名称,值是新值。此数据已作为 Swift 中的 Dictionary<String, String> 存在 - 如何将其附加到 php url 中,格式如下:

"http://server/directory/targetScript.php/?recordId=\(recId)&newFieldArray=\(itemDict)"

其中:

recId = 正在更新的记录 ID(作为与字典一起传递单独变量的示例)

itemDict=Swift

中生成的字典

这是当前代码: ...其中 returns 错误显示 url 为 "nil"

class func updateItemInfo ( recordId:String, updatedDict:Dictionary<String, String> ) -> Void {
    //recordId = the FileMaker recordId of the item being updated
    //updatedDict = the primaryKey of the current item

    //direct to php file location
    let server:String = "myServer.com"
    let phpFile:String = "/php/UpdateRecord.php"

    let baseURL = NSURL(string: "http://\(server)\(phpFile)")
    let url = NSURL(string: "?recordId=\(recordId)&newData=\(updatedDict)", relativeToURL: baseURL)
    let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
    var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 20.0)
    request.HTTPMethod = "POST"

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

    var response: NSURLResponse? = nil
    var error: NSError? = nil
    let reply: NSData! = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)
    let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
    println(results)
}

为什么不使用 JSON 来传递值。

  1. 转换Dictionary to JSON String.
  2. 如果您将此数据作为查询字符串发送;你必须 URL encode it
  3. 终于可以发到PHP了;它将作为单个参数到达 $_GET 中的位置。 在那里你需要 PHP 的 json_decode 来从它获取关联的数组。