【问题标题】:Dictionary value by key字典键值
【发布时间】:2014-06-03 22:26:44
【问题描述】:

在尝试从 Dictionary 获取值时,Xcode 向我显示以下错误:

找不到接受提供的参数的“下标”的重载

class func fromDictionary(enterpriseDictionary:Dictionary<String, AnyObject>) -> Enterprise
{
    var enterprise:Enterprise = Enterprise()

    enterprise.id = enterpriseDictionary["id"] as Int  (ERROR OCCURS HERE)
    enterprise.name = enterpriseDictionary["name"] as? String ( AND HERE )


    return enterprise
}

【问题讨论】:

  • 可以显示调用代码吗?
  • 是的,我猜 Int 和 String 不是对象,所以 Any 是你想要的。您不能将对象向下转换为原始类型,编译器可以在一英里外看到它。

标签: dictionary key swift subscript


【解决方案1】:

我设法通过将“AnyObject”替换为“Any”来解决这个问题,如下所示:

class func fromDictionary(enterpriseDictionary:Dictionary<String, Any>) -> Enterprise
{
    var enterprise:Enterprise = Enterprise()

    enterprise.id = enterpriseDictionary["id"] as Int
    enterprise.name = enterpriseDictionary["name"] as? String


    return enterprise
}

正如@Andrey Tarantsov 所说:

这是因为 AnyObject 用于任何类实例(您也可以将其视为 Objective-C 意义上的对象); String 和 Int 不是类。

【讨论】:

  • 因为 AnyObject 适用于任何 类实例(您也可以将其视为 Objective-C 意义上的对象); String 和 Int 不是类。
猜你喜欢
  • 2015-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多