快速将[String:Any]转换为[String:String]

时间:2020-05-16 11:06:26

标签: ios swift dictionary casting

如何在Swift中将[String: Any]转换为[String: String]。我尝试过这样的投射,但没有帮助:

for (key, value) in dictionary {
    dictionary[key] = value as! String
}

3 个答案:

答案 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]