如何使用带有 Alamofire 参数的数组?
Posted
技术标签:
【中文标题】如何使用带有 Alamofire 参数的数组?【英文标题】:How do I use arrays with Alamofire parameters? 【发布时间】:2017-08-04 20:40:32 【问题描述】:我想使用 Alamofire 发送数组。
我有什么
let params: Parameters = [
id:job.id ?? 0,
]
我还必须以这种格式将数组发送到后端
jobs[0]=1, jobs[1]=2
等
我的键是jobs[0],值是1
这是 Java 上的等号
for (int i = 0; i < size; i++)
final int id = job.getPuIds().get(i);
params.put("job" + "[" + i + "]", String.valueOf(id));
我怎么能这样做?
【问题讨论】:
更新了我的答案以显示代码以创建您的 id 数组 【参考方案1】:这是一个关于如何用 swift 语法打印你想要的字符串的例子:
for i in 0...jobs.count-1
print("job[\(i)]=\(jobs[i].id)")
但我认为你应该试试这个:
发送带有键“jobs”的字典和数组作为该键的值。
var ids = [Int]()
for job in jobs
ids.append(job.id)
var params = ["jobs":ids]
编辑:更简洁的代码 - 特别感谢 @Alexander
let params = ["jobs": jobs.map $0.id ]
【讨论】:
最好只使用map
: let params = ["jobs": jobs.map $0.id ]
omg 这个答案太性感了.. 对不起.. 我刚开始 swift.. 这是 100% 正确的【参考方案2】:
按照您在 Java 中的实现,您可以使用以下方法在 Swift 中执行相同操作:
var params: [String:Any] = [:]
for (index, _) in yourArray.enumerated()
let id = job.getPuIds()[index]
params["job[\(index)]", "\(id)"]
看你的实现我想我可以猜到size
变量是基于job.getPuIds()
中返回的,在这种情况下代码可以简化:
var params: [String:Any] = [:]
for (index, id) in job.getPuIds().enumerated()
params["job[\(index)]", "\(id)"]
【讨论】:
以上是关于如何使用带有 Alamofire 参数的数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中使用 Alamofire 上传带有 JSON 参数的图像?
使用 swift 在 Alamofire 中发送带有对象数组的 JSON 作为参数