2017-05-06 10 views
0

私はいくつかのカスタムオブジェクトからSwift Dictionaryを作成しています。Swift Dictionary Representation

以下は、私が辞書を定義するところです。

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 
    } 
} 

I:

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

dataPointは、以下のクラスのインスタンスである:以下のforループ var carDictionary:[String:Any] = Dictionary<String, Any>()

ザ・私は私のカスタムオブジェクトのうち、辞書を移入しようとしているところであります明らかに多少一般的なエラーのように見えるものを取得する

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

しかし、スウィフトで辞書の作成がどのように機能するのかについて私が理解していない部分があると思います。ありがとうございました!同様の問題と

投稿: 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) 
}