Swift从Dictionary of Dictionary中删除可选项

时间:2015-07-06 20:02:18

标签: json xcode swift api

我正在以JSON的形式从api获取数据。我得到一个dynamicType Swift.Dictionary<NSObject, Swift.AnyObject>变量并调用此变量myDictionary。当我要求print(myDictionary["keyA"])时,它返回与“keyA”关联的值(内部字典),但它将其作为Swift.Optional<Swift.AnyObject>返回。

如何使用不可选的内部字典设置变量?或者如何访问内部字典值?

1 个答案:

答案 0 :(得分:2)

所有字典访问都以选项的形式返回,因为使用的密钥可能不存在于字典中,因此在这种情况下会返回nil。您可以使用可选的强制转换as?以及可选的绑定if let来确保该值存在,它是预期的字典,并将其解包:

if let innerDictionary = myDictionary["keyA"] as? [NSObject: AnyObject] {
    // if we get here, "keyA" is a valid key in myDictionary and
    // we got the type right.  innerDictionary is now unwrapped and ready
    // to use.
}

我使用[NSObject: AnyObject]作为innerDictionary类型。如果您对此有更多了解,则可以使用更具体的强制转换,例如as? [String: String],如果您知道密钥和值都是String类型。如果您错了,可选的强制转换将返回nil并且不会输入该块,因为可选的绑定将不会成功。