如何在Swift中将[String: Any]
转换为[String: String]
。我尝试过这样的投射,但没有帮助:
for (key, value) in dictionary {
dictionary[key] = value as! String
}
答案 0 :(得分:3)
这是一种安全的方法,转换后将只包含[String:String],非字符串Any将被丢弃:
let converted = dictionary.compactMapValues { $0 as? String }
答案 1 :(得分:0)
这里:
import Foundation
let anyDict = ["String0": "0", "String1": 1] as [String : Any]
var stringDict = [String: String]()
for (key, value) in anyDict {
if let value = value as? String {
stringDict[key] = value
}
}
print(stringDict)
答案 2 :(得分:0)
如果实际上您想要做的是:
在Swift中将[String:Any]转换为[String:String]。
如果Any
中的任何一个都不是String
,如果您很乐意返回任何东西,那么您可以这样做:
安全:
if let stringDictionary = dictionary as? [String: String] {
//Use your new stringDictionary here
}
不安全:
let stringDictionary = dictionary as! [String: String]