Параметры Alamofire не сериализуются должным образом - PullRequest
0 голосов
/ 28 июня 2018

Таким образом, у меня никогда не возникало этой проблемы при использовании AFNetworking или при любом другом вызове API с использованием Alamofire, однако, похоже, у меня возникла проблема, в основном у меня есть Array of Dictionaries, который должен быть отформатирован следующим образом;

[{"value":"1","created_at":"2018-06-26 01:57:14"},
 {"value":"4","created_at":"2018-06-26 01:59:44"}]

Однако они проходят через серверную часть вот так;

[{"value":"4"},{"created_at":"2018-06-26 02:30:11"},
{"value":"4"},{"created_at":"2018-06-26 03:24:41"}]

Я пытался создать жестко запрограммированный параметр, чтобы заставить его работать, но безуспешно, где я ошибаюсь, ребята (я знаю, что это, вероятно, что-то глупое), вот жестко закодированные демо-параметры;

let dictA =  ["value":"2", "created_at":"2018-06-26 04:05:50"]
let dictB =  ["value":"4", "created_at":"2018-06-26 05:05:50"]
let params : NSDictionary = ["values":[dictA,dictB]]

ТИА

// EDIT

Вот запрос Alamofire;

Alamofire.request(urlString, method: .post, parameters: params, encoding: URLEncoding.default, headers: headers).responseJSON(completionHandler: { response in 
    //Handle response 
})

// EDIT

Я решил эту проблему путем обхода, по какой-то причине объекты правильно форматируются, когда они сериализуются в тело, используя собственный URLRequest, а затем инициализируют запрос Alamofire, используя этот запрос;

var request = URLRequest(url: url)

request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try! JSONSerialization.data(withJSONObject: params)

Alamofire.request(request).responseJSON(completionHandler: { response in
         //Handle response
})

1 Ответ

0 голосов
/ 28 июня 2018

Попробуйте изменить:

let params: Parameters = ["values": [dictA, dictB]]

или

let params: [String: Any] = ["values": [dictA, dictB]]
...