【问题标题】:How do I use arrays with Alamofire parameters?如何使用带有 Alamofire 参数的数组?
【发布时间】: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 数组

标签: ios swift swift3 alamofire


【解决方案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)"]        
}

【讨论】:

    猜你喜欢
    • 2015-08-04
    • 2018-06-23
    • 1970-01-01
    • 2016-10-06
    • 2017-12-15
    • 1970-01-01
    • 2018-02-08
    • 2018-02-14
    • 2017-07-14
    相关资源
    最近更新 更多