0

我正在尝试设置 Alamofire 4 请求的标头,其中标头具有一个键,其值是另一个键值对。swift 编译器对我的头变量很满意,但 Alamofire 不会接受它们。

这就是我所拥有的:

 let subHeader = [
  "some-key": "some-value",
  "another-oey": "another-value"
  ]

let headers : [String: Any] = [
  "some-header-key": "some-header-value",
  "subdata": [subHeader]
  ]

// Upload data                  
Alamofire.upload(data,
   to: uploadurl,
   method: .put,
   headers: headers)
   .validate()
   .response { response in
   // Handle response
 }
4

1 回答 1

0

如果您查看Alamofire 的源代码,您会发现HTTPHeaders实际上是[String: String]. 基本上,对您的Alamofire期望[String: String]headers.

您可以做的是将您的转换subheaderStringwithNSJSONSerialization并将其传递给Alamofire.

let dictData = try! JSONSerialization.data(withJSONObject: subheader)
let dictString = String(data: dictData, encoding: String.Encoding.utf8)!
print(dictString)
// Now use "dictString" instead of "subheader" in your "headers" dictionary

您可以根据需要进行错误处理,!为了简单起见,我使用了 s。

于 2017-04-11T16:12:03.613 回答