【问题标题】:Swift Dictionary: join key and value into stringSwift Dictionary:将键和值加入字符串
【发布时间】:2016-07-11 20:00:23
【问题描述】:

我正在为此寻找最佳语法:

        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

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

【问题讨论】:

    标签: swift dictionary syntax


    【解决方案1】:

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

    let responseParameters = ["keyA" : "valueA", "keyB" : "valueB"]
    
    let responseString = responseParameters.map{ "\($0):\($1)" }
                                           .joinWithSeparator("+")
    

    【讨论】:

      【解决方案2】:

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

      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
      

      【讨论】:

        【解决方案3】:

        swift 5 的更新答案:

        let responseParameters = ["keyA": "valueA", "keyB": "valueB"]
        let responseString = responseParameters.map { "\($0):\($1)" }
                                           .joined(separator: "+")
        

        【讨论】:

          【解决方案4】:

          其实你可以用reducelike:?

          let responseParameters = ["keyA": "valueA", "keyB": "valueB"]
          
          let responseString = responseParameters.reduce("") { $0.isEmpty ? "\($1.key):\($1.value)" : "\($0)+\($1.key):\($1.value)" }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-10-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多