【问题标题】:Swift remove optional from Dictionary of DictionarySwift 从字典字典中删除可选
【发布时间】:2015-07-06 20:02:18
【问题描述】:

我正在以 JSON 的形式从 API 获取数据。我得到一个动态类型变量Swift.Dictionary<NSObject, Swift.AnyObject> 并调用这个变量myDictionary。当我请求print(myDictionary["keyA"]) 时,它返回与“keyA”关联的值(内部字典),但它以Swift.Optional<Swift.AnyObject> 的形式返回。

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

【问题讨论】:

  • 你不能。默认情况下,字典中的任何内容都是可选的,因为当您请求某个键的值时,该键始终不存在,因此该值将为零。如果你不希望结果是可选的,你可以打开它。
  • 内字典有什么类型?

标签: json xcode swift api


【解决方案1】:

所有字典访问都作为可选返回,因为使用的键可能不存在于字典中,因此在这种情况下返回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并且不会进入块,因为可选的绑定不会成功。

【讨论】:

    猜你喜欢
    • 2019-09-26
    • 2020-07-14
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    相关资源
    最近更新 更多