2017-05-06 72 views
0

我正在创建Swift Dictionary以外的一些自定义对象。Swift词典表示法

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

的下面循环就是我试图填充字典我的自定义对象:

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

回答

0

你把在那里的期待键标值。

到数组类似,您访问的对象在你的字典里是这样的:

let myValue = myDictionary["myKey"] 

这检索在有钥匙“的myKey”字典对象。要改为设置在字典中的值,分配给该键标这样的:

myDictionary["myKey"] = myValue 

在你的情况下,它看起来像你的数据点类有可能在字典中使用的键和值对象:

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