查询包含数组的参数,arrays,swift"/>

首页 > 解决方案 > iOS 如何转换字典查询包含数组的参数

问题描述

我有一个字典数据:

let dict: [String: Any] = [
    "shapeIDs": [1,2,3],
    "rows": [1,2],
    "userID": "231"
]

我想将其转换为 URL 的查询参数。我的期望结果应该是这样的:

"?shapeIDs[]=1&shapeIDs[]=2&shapeIDs[]=3&rows[]=1&rows[]=2&userID=231"

请帮助为此创建一个乐观的逻辑。

标签: arraysswift

解决方案


快速解决方案:

extension Dictionary {
    var queryString: String {
        let query = self.reduce("") { (result, keyValue) -> String in
            var string = ""
            if let values = keyValue.value as? Array<Any> {
                string = values.map({"\(keyValue.key)[]=\($0)&"}).reduce("", +)
            } else {
                string = "\(keyValue.key)=\(keyValue.value)&"
            }
            return result + string
        }.dropLast()
        return "?" + String(query)
    }
}

推荐阅读