我正在以JSON的形式从api获取数据。我得到一个dynamicType Swift.Dictionary<NSObject, Swift.AnyObject>
变量并调用此变量myDictionary
。当我要求print(myDictionary["keyA"])
时,它返回与“keyA”关联的值(内部字典),但它将其作为Swift.Optional<Swift.AnyObject>
返回。
如何使用不可选的内部字典设置变量?或者如何访问内部字典值?
答案 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
并且不会输入该块,因为可选的绑定将不会成功。