如何使用带有 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 作为参数

如何使用 Alamofire.upload 函数上传带有一些参数的图片或 wav 文件

如何上传带有 Alamofire 内部参数的图像

如何使用 alamofire 和数组形式的参数上传图像

如何将Object参数数组快速传递给Alamofire