【发布时间】:2018-11-23 04:24:44
【问题描述】:
鉴于下面的字典字典,解包 Int 的正确语法是什么?一步到位?
let dict:Dictionary<String, Dictionary<String, Int?>> = [
"parentKey" : [
"firstKey" : 1,
"secondKey" : nil]
]
let x = "someKey"
let y = "someOtherKey"
var foo = 0
if let goo = dict[x]?[y] { foo = goo } //<-- Error: cannot assign (Int?) to Int
if let goo = dict[x]?[y], let boo = goo { foo = boo } //<-- OK
在第一个 'if let' 中,goo 作为 Int 返回? - goo 然后需要像第二个'if let'一样解开......
一步完成的正确语法是什么?
【问题讨论】:
-
if let goo = dict[x]?[y] ?? NSNotFound { foo = goo }? -
这会在两个键都有效时给出正确的结果(例如 x = "parentKey, y = "firstKey" 或 y = "secondKey"。但是,当 x 或 y 为一个不存在的键(例如 x = "someKey" 或 y = "someOtherKey")
标签: swift dictionary unwrap