【问题标题】:Swift Dictionary RepresentationSwift 字典表示
【发布时间】:2017-05-06 14:48:16
【问题描述】:

我正在用一些自定义对象创建一个 Swift Dictionary

下面是我定义字典的地方; var carDictionary:[String:Any] = Dictionary<String, Any>()

下面的 for 循环是我试图从我的自定义对象中填充字典的地方:

 for dataPoint in dataPoints! {
     carDictionary[dataPoint.value(forKey: dataPoint.dataKey)]
 }

dataPoint 是以下类的一个实例:

public class NACarDataPoint: NSObject {

    var dataKey: String!
    var dataValue: Any!

    public override init() {
        // generic initializer, generally designed to be overridden
        super.init()
    }

    init(key: String, value: Any) {
        self.dataKey = key
        self.dataValue = value
    }
}

我得到了

公认的一些常见错误
`Cannot subscript a value of type `[String : Any]` with an index of type `Any`?`

但是,我认为我对在 Swift 中如何创建字典的理解有一些缺失,这使我无法弄清楚问题所在 - 有人有什么建议吗?谢谢!

有类似问题的帖子: String not convertible to [AnyObject]

Cannot subscript a value of type '[String : String]?' with an index of type 'String'

Cannot subscript a value of [AnyObject]? with an index of type Int

【问题讨论】:

    标签: swift dictionary foundation


    【解决方案1】:

    您将值放在期望键下标的位置。

    类似于数组,您可以像这样访问字典中的对象:

    let myValue = myDictionary["myKey"]
    

    这将检索字典中具有键“myKey”的对象。要改为在字典中设置一个值,请像这样分配给键下标:

    myDictionary["myKey"] = myValue
    

    在您的情况下,您的 dataPoint 类似乎具有可在字典中使用的键和值对象:

     for dataPoint in dataPoints! {
         carDictionary[dataKey] = dataPoint.value(forKey: dataPoint.dataKey)
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 2018-03-23
      • 2018-10-03
      • 2016-05-14
      • 1970-01-01
      • 2015-05-10
      相关资源
      最近更新 更多