ios - 使用 Alamofire 的数组放置请求
问题描述
我正在尝试向 Alamofire 发出 put 请求,并且我想传递如下内容:
[
{
"id" : 1,
"position": 0
},
{
"id" : 2,
"position": 1
},
{
"id" : 6,
"position": 2
}
]
通常,要使用 alamofire 提出请求,我会这样做:
request = Alamofire
.request(
url,
method: method,
parameters: parameters,
encoding: encoding,
headers: buildHeaders());
Alamofire 强迫我将参数制作成字典,但我希望参数是字典数组。我怎样才能做到这一点?
谢谢。
解决方案
好吧,您的参数主体的类型为 [[String: Any]],或者如果您使用 Alamofire [Parameters]。
所以如果你解析一些对象数组来创建这个参数数组。你可以这样做:
var positionedArray = [[String : Any]]()
for (index, item) in dataArray.enumerated() {
guard let id = item.id else {
return
}
let singleParameters : [String: Any] = ["id": id, "position" : index]
sorted.append(singleParameters)
}
因此,您可以根据您的请求使用此正文(参数)。此外,您应该使用 JSONSerialization:
例如,如果您使用自定义的 Alamofire 客户端,只需使用扩展名:
let data = try JSONSerialization.data(withJSONObject: parameters, options: JSONSerialization.WritingOptions.prettyPrinted)
let json = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
request.httpBody = json!.data(using: String.Encoding.utf8.rawValue)
var finalRequest = try URLEncoding.default.encode(request, with: nil)
推荐阅读
- azure - 是否可以以编程方式取消 Azure DevOps 管道作业?
- cloudkit - 是否保留了 CKAsset 图像元数据?
- ios - 如何在 Swift 中同时分别录制音频和视频
- javascript - 如何根据单击的按钮填写 HTML 表单的特定字段
- k2 - 创建带有用户姓名缩写的图标
- python - Tensorflow 2:对掩码应用一种热编码以进行语义分割
- java - 线程之间的Java调试?
- c# - C#如何将一个数组一分为二
- amazon-web-services - 以编程方式从 AWS S3 到 RDS 无服务器 Aurora (PostgreSQL)
- node.js - 在 ubuntu 上安装时间包会返回 node-gyp 错误