Я пытаюсь обновить значение в комплексе Dictionary
неизвестного типа, так как он содержит как String
s, так и под-словари. Мой код функции инициализации ниже.Невозможно обновить значение вложенного словаря
Это то, что мой Dictionary
выглядит как раньше:
var methods = [
"PUN": [
"name": "Time of PUN",
"params": ["FJ": 18, "IS": 17]
],
"KHR": [
"name": "Time KHR",
"params": ["FJ": 15, "IS": 15]
],
"LHR": [
"name": "Time of LHR",
"params": ["FJ": 19.5, "IS": 17.5 , "MG": 8.9]
]
]
Это то, что я хочу достичь, динамически:
var methods = [
"PUN": [
"name": "Time of PUN",
"params": ["FJ": 18, "IS": 17, "Offset": "0 min", "Midnight": "Standard"]
],
"KHR": [
"name": "Time KHR",
"params": ["FJ": 15, "IS": 15, "Offset": "0 min", "Midnight": "Standard"]
],
"LHR": [
"name": "Time of LHR",
"params": ["FJ": 19.5, "IS": 17.5 , "MG":8.9, "Offset": "0 min", "Midnight": "Standard"]
]
]
Это мой код:
Я принимаю дополнительные значения от defaultParams
(Dictionary
) и вставить в methods
(Dictionary
).
var methods = [String: AnyObject]()
let defaultParams = ["Offset": "0 min", "Midnight": "Standard"]
init() {
methods["Punjab"] = [
"name": "Punjab Time",
"params": ["FJ": 18, "IS": 17]
]
methods["Karachi"] = [
"name": "Time of Karachi",
"params": ["FJ": 15, "IS": 15]
]
methods["Lahore"] = [
"name": "Lahore City Time",
"params": ["FJ": 19.5, "IS": 17.5 , "MG": 8.9]
]
for (methodName, methodValue) in methods {
var params = methodValue["params"]!!
for (defaultParamKey, defaultParamValue) in defaultParams {
if params.objectForKey(defaultParamKey) == nil {
// I am having problem with the line below, it says
// cannot asign a value of type String to a value of type AnyObject?!
params[defaultParamKey] = defaultParamValue
}
}
}
}
На инициализации я просто хочу, чтобы вставить пропущенные значения в словаре переменной methods
, проверив его с переменной defaultParams
.
Что должно идти где? Не ясно. Пожалуйста, объясните, что вы хотите подробно. – Moritz
Зачем голосовать -1 Я думал, что это сообщество помогает людям или это просто для критики и ниспровержения, если кто-то не понимает, я могу объяснить это дальше. Если люди будут держать под вопросом настоящий вопрос, чем то, что нужно для сохранения этого сайта. Я сделал свое исследование и немного подождал, прежде чем приходить сюда и просить о помощи. – user606669
Функция init, указанная выше, называется вызывающей. и метод с именем переменной, который я хочу изменить внутри init() – user606669