Как отправить параметры в виде строки в alamofire - PullRequest
0 голосов
/ 25 апреля 2019

Я должен получить данные JSON, указывающие полезную нагрузку, которую мне нужно передать в URL. Это будет выглядеть так:

{
  "token": "string",
  "body": {
    "token": "another string",
    "intValue": 1,
    "somethingElse": "another string"
  }
}

Я знаю, что body будет иметь свойства, которые всегда являются либо строкой, либо числом. Но я не знаю, каким ключом будут эти пары со значением val или string.

Мне нужно отправить это тело с Alamofire, что я делал следующим образом:

// parsing the data received with the Codable:
struct NotificationDetails: Codable {
    let token: String
    let body: [String:String]?
    let

    init (token: String) {
        self.token = token
        self.body = nil
    }

    init (token: String, body: [String:String]) {
        self.token = token
        self.body = body
    }

}

Обратите внимание, что я не могу просто использовать удобный тип параметров Alamofire, например:

struct NotificationDetails: Codable {
    let token: String
    let body: Parameters?

    init (token: String) {
        self.token = token
        self.body = nil
    }

    init (token: String, body: Parameters) {
        self.token = token
        self.body = body
    }
}

потому что это не кодируется, как AnyObject.

// then elsewhere, using that data
guard let bodyJSON = localNotificationDetails.body else {
   callback()
   return
}
AF.request(url, method:method, parameters: bodyJSON).responseJSON(queue: queue) { response in

но теперь, когда я вижу, что некоторые из моих данных будут числовыми, а не строковыми, мне интересно, как я могу это сделать сейчас?

1 Ответ

1 голос
/ 25 апреля 2019

Использование bodyJson : [String : AnyObject]?

пример

let bodyJson = [
  "key" : "value",
  "key" : value,
"token": "string"
] as? [String : AnyObject]

Передать этот тип данных в запросе тела json.

Alamofire.request(url, method: .post, parameters: bodyJson, encoding: URLEncoding.httpBody, headers: headers).responseJSON { (responseObject) -> Void in

                print(responseObject) 
}

Вы можете выполнять другие операции на responseObject

...