有没有办法可以将KVP字典变成字符串?

时间:2018-05-06 21:23:44

标签: swift dictionary

我正在尝试将我从FireStore获取的[String:Bool]变量转换为字符串。

示例:

var action = ["Nourishing":true, "Radiance":true]

为:

  

“滋养,光彩照人”

这可能吗?

2 个答案:

答案 0 :(得分:1)

如果您只想将所有键组合成一个字符串,您可以这样做:

var action = ["Nourishing":true, "Radiance":true, "Whatever":false]
let keysAll = action.keys.joined(separator: ", ")
print(keysAll)

结果:

  

滋养,光彩,无论什么

如果您只想要某些键,则首先需要根据需要过滤键/值。例如,如果您只想要值为true的键,则可以执行以下操作:

var action = ["Nourishing":true, "Radiance":true, "Whatever":false]
let keysTrue = action.filter { $0.value }.keys.joined(separator: ", ")
print(keysTrue)

结果:

  

滋养,光彩

或者您可以这样做:

var action = ["Nourishing":true, "Radiance":true, "Whatever":false]
let keysTrue = action.flatMap { $0.value ? $0.key : nil }.joined(separator: ", ")
print(keysTrue)

答案 1 :(得分:0)

使用reduce

也有更难的解决方案
 let action = ["Nourishing":true, "Radiance":true] 

     let  data =   action.reduce("") { (result, dic) -> String in
            return result.count == 0  ? (result + "\(dic.key)") :  (result + ",\(dic.key)")
      }
     print(data)