【发布时间】:2015-09-08 06:55:13
【问题描述】:
我正在尝试更新未知类型的复杂Dictionary 中的值,因为它包含Strings 和子字典。我的初始化函数代码如下。
这是我之前的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
}
}
}
}
在初始化时,我只想通过使用变量 defaultParams 来检查字典变量 methods 中的缺失值。
【问题讨论】:
-
什么应该去哪里?目前还不清楚。请详细说明您想要什么。
-
为什么要投票 -1 我认为这个社区是为了帮助人们,还是只是为了批评和投票,如果有人不明白,我可以进一步解释。如果人们继续对这样的真实问题投反对票,那么让这个网站保持活力的意义何在。在来这里寻求帮助之前,我做了很多研究并花了很多时间。
-
上面的init函数是被调用的。变量命名方法是我要在 init() 中修改的变量
-
让我们用简单的语言说我想这样做:-- methods["params"]["Offset"] = "TEST" 。我基本上想为方法变量和相应的值添加一个额外的键
-
methods["params"] 中不存在“offset”,但我想将其放入并给它一个值“TEST”
标签: swift dictionary nested