ios — публиковать словарь из Swift для переполнения стека

Как можно создать словарь, созданный в 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)
}

2

Решение

Почему бы вам не использовать JSON для передачи значений.

  1. Преобразовать Словарь в строку JSON.
  2. Если вы отправляете эти данные в виде строки запроса; тебе придется URL закодировать
  3. Наконец, вы можете отправить его в PHP; где он достигнет в качестве единственного параметра в $ _GET.
    Там вам понадобятся PHP json_decode чтобы получить обратно связанный с ним массив.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]