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