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

Posted

技术标签:

【中文标题】Info.plist 字典到 Enum:String 类型的字典【英文标题】:Info.plist Dictionary to Dictionary of type Enum:String 【发布时间】:2019-02-20 13:09:02 【问题描述】:

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

为了更好地解释,我正在尝试将下面的 urlDict 转换为类型的字典,但不断出现致命错误。

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

枚举有一个原始类型的 String 并且有一个 keyOne 的 case。

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】:

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

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

【讨论】:

以上是关于Info.plist 字典到 Enum:String 类型的字典的主要内容,如果未能解决你的问题,请参考以下文章

Info.plist 中未定义的字典

使用 XCODE 将 UIRequiredDeviceCapabilities 添加到 info.plist [重复]

如何使用 PlistBuddy 将多个条目添加到 plist 字典

从 Info.plist 读取版本

诠释?到 CLBeaconMajorValue

如何将元素添加到 info.plist 数组?