Как словарь, сгенерированный в Swift, выставляется как параметр в URL-адресе PHP?
В частности, задача состоит в обновлении многих полей в размещенной базе данных. Вместо того, чтобы определять новые значения для каждого поля в качестве отдельного параметра, я хочу передать словарь, где ключи являются именами полей, а значения – это новые значения. Эти данные уже существуют как Dictionary<String, String>
в Swift – как его можно привязать к php url в следующем формате:
"http://server/directory/targetScript.php/?recordId=\(recId)&newFieldArray=\(itemDict)"
Где:
recId
= идентификатор записи, который обновляется (в качестве примера передачи отдельной переменной вместе со словарем)
itemDict
= словарь, сгенерированный в Swift
Вот текущий код: … который возвращает ошибку, показывающую 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 для передачи значений.