Словарь Info.plist к словарю типа Enum: String - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь взять словарь из моего Info.plist и сохранить его как словарь типа Enum: String

Чтобы лучше объяснить, я пытаюсь преобразовать приведенный ниже urlDict в словарьтипа, но получаю фатальную ошибку.

Я не могу понять, почему 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 голосов
/ 20 февраля 2019

Используйте forEach и создайте URLKeys для каждого ключа и приведите каждое значение к строке

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