Swift字典表示

时间:2017-05-06 14:48:16

标签: swift dictionary foundation

我正在努力从一些自定义对象中创建一个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

1 个答案:

答案 0 :(得分:0)

您将价值放在预期关键下标的位置。

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

let myValue = myDictionary["myKey"]

这将检索字典中具有键&#34; myKey&#34;的对象。要在字典中设置值,请按以下方式分配键下标:

myDictionary["myKey"] = myValue

在您的情况下,看起来您的dataPoint类具有可以在字典中使用的键和值对象:

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