Swift Dictionary:将键和值连接到字符串中

Rod*_*ici 6 syntax dictionary swift

我正在寻找一个最好的语法:

        let responseParameters = ["keyA" : "valueA", "keyB" : "valueB"]
        var responseString = ""
        for (key, value) in responseParameters {
            responseString += "\(key):\(value)"
            if Array(responseParameters.keys).last != key {
                responseString += "+"
            }
        }
        //responseString: keyA:valueA+keyB:valueB
Run Code Online (Sandbox Code Playgroud)

类似于数组joinWithSeparator,使用flatMap或类似的东西.(学习目的)

Ale*_*ica 14

您可以映射字典中的键/值对以将它们转换为字符串数组,然后您可以将它们与+.但请记住,字典是无序的,因此这不会保留输入顺序.

let responseParameters = ["keyA" : "valueA", "keyB" : "valueB"]

let responseString = responseParameters.map{ "\($0):\($1)" }
                                       .joinWithSeparator("+")
Run Code Online (Sandbox Code Playgroud)


dfr*_*fri 5

字典不是有序集合,因此您必须在访问键值对的“有序版本”之前对键进行排序。例如

let responseParameters = ["keyA" : "valueA", "keyB" : "valueB", "keyC" : "valueC"]

let responseString = responseParameters
    .sort { $0.0 < $1.0 }
    .map { $0 + ":" + $1 }
    .joinWithSeparator("+")

print(responseString) // keyA:valueA+keyB:valueB+keyC:valueC
Run Code Online (Sandbox Code Playgroud)