Swift中如何将[String:Bool]类型字典转换为[String]类型数组?
解决Swift中[String:Bool]转[String]数组的问题
嘿,你遇到的问题是因为用了keys.description——这个属性其实是把所有key拼成了一个完整的字符串描述,所以放进数组里就只会得到一个包含整个描述的元素,不是你想要的单个key组成的数组。
给你两种靠谱的解决方法:
方法一:直接将keys集合转为数组
Swift里字典的keys本身是一个可遍历的集合,直接用Array()初始化就能得到你要的[String]数组:
var action = ["Nourishing": true, "Radiance": true] let actionArray = Array(action.keys) // 结果:["Nourishing", "Radiance"]
方法二:过滤出value为true的key(可选)
如果你的实际场景里有value为false的项,只想保留值为true对应的key,可以用filter+map组合:
var action = ["Nourishing": true, "Radiance": true, "Cleansing": false] let filteredActionArray = action.filter { $0.value }.map { $0.key } // 结果:["Nourishing", "Radiance"]
为什么原来的代码不对?
action.keys.description返回的是一个字符串,内容是"\"Nourishing\", \"Radiance\""——这是集合的可读描述文本,不是拆分好的单个元素。把它放进数组[action.keys.description],自然就得到了只有一个元素的数组啦。
内容的提问来源于stack exchange,提问作者Julienne Lim
相关产品推荐
相关产品推荐

