Info.plist字典到Enum:String类型的字典

时间:2019-02-20 13:09:03

标签: swift nsdictionary info.plist

我正在尝试从Info.plist中获取字典并将其另存为Enum:String类型的Dictionary

为了更好地解释,我正在尝试将下面的urlDict转换为Type的Dictionary,但始终会出现致命错误。

我不知道为什么 let enumDict = urlDict["keys"] as? Dictionary<URLKeys, String>不起作用

该枚举具有String的原始类型,并具有keyOne的大小写。

enum URLKeys: String {
    case keyOne = "keyOne"
}

var keysDictionary = Dictionary<String, Any>()
keysDictionary["keyOne"] = "abc"

var urlDict = Dictionary<String, Any>()
urlDict["keys"] = keysDictionary

guard let enumDict = urlDict["keys"] as? Dictionary<URLKeys, String> else {
    fatalError()
}

1 个答案:

答案 0 :(得分:2)

使用forEach并为每个键创建一个URLKeys并将每个值转换为字符串

var enumDict:[URLKeys: String] = [:]
keysDictionary.forEach { 
    if let key = URLKeys(rawValue: $0.0), let value = $0.1 as? String {
        enumDict[key] = value
    }
}