#ios #swift #dictionary #alamofire #urlencode
#iOS #swift #словарь #alamofire #urlencode
Вопрос:
Я хочу отправить запрос Alamofire со следующим
var postParameters=[
"x" : "value1",
"y" : "value2",
"y" : "value3"
]
Как мне этого добиться?.
Я не могу предоставить это как какую-либо коллекцию. Мне нужно указать это только как отдельные параметры.
Любой намек будет полезен для меня. Заранее спасибо.
Комментарии:
1. Это звучит как проблема XY . Как вы думаете, почему вам нужно это делать? Что вы пытаетесь сделать с таким словарем?
2. я должен отправить запрос Api с такими параметрами
3. Тогда либо это действительно плохо написанный API, либо вы неправильно поняли документацию. Можете ли вы дать ссылку на документы API, в которых говорится, что вам нужен словарь с 2 одинаковыми ключами?
4. Это невозможно сделать. Присвоение значения, второго после ключа (y), заменит предыдущее.
5. @AmuthaPriya Недавно я наткнулся на аналогичный API, который принимал параметры в кодировке URL и несколько значений для одного и того же ключа. К счастью, Alamofire может сделать это просто отлично. Смотрите мой ответ.
Ответ №1:
В iOS невозможно создать подобный dict, вместо этого вы можете выполнять несколько вызовов API.
Ответ №2:
Хотя нет возможности создать словарь с дубликатами ключей, есть способ передать такого рода параметры на ваш сервер с помощью массива:
let postParameters: [String: Any] = [
"x" : "value1",
"y" : ["value2", "value3"]
]
затем, когда вы вызываете request
функцию Alamofire, вы передаете новый экземпляр Alamofire URLEncoding
в качестве encoding
параметра и указываете способ, которым вы хотите кодировать массивы, например, так:
AF.request(
"url",
method: .post,
parameters: postParameters,
encoding: URLEncoding(arrayEncoding: .noBrackets)
)