我正在尝试将我从FireStore获取的[String:Bool]
变量转换为字符串。
示例:
var action = ["Nourishing":true, "Radiance":true]
为:
“滋养,光彩照人”
这可能吗?
答案 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)