2016-05-02 10 views
1

私は比較的迅速で新しいです、そして、私はここで少し問題があります。 JSONはすでに辞書としてシリアライズされています。これは私がここで辞書スウィフト2の配列として辞書から値を取得

guard let result = try NSJSONSerialization.JSONObjectWithData(responseData, options: []) as? [String:AnyObject] else { 
        print("Error trying to convert data to JSON") 
        completionHandler(nil, response, error) 
        return 
       } 

を取得する方法であることは、私は、私はそれにすべてのアイテムを反復処理することができ、配列として、これらの地震を取得したい私の辞書

{ 
    "count": "68", 
    "earthquakes": [ 
    { 
     "src": "us", 
     "eqid": "b000gbf8", 
     "timedate": "2013-04-19 03:05:53", 
     "lat": "46.1817", 
     "lon": "150.7960", 
     "magnitude": "7.2", 
     "depth": "122.30", 
     "region": "Kuril Islands" 
    }, 
    { 
     "src": "us", 
     "eqid": "b000g7x7", 
     "timedate": "2013-04-16 10:44:20", 
     "lat": "28.1069", 
     "lon": "62.0532", 
     "magnitude": "7.8", 
     "depth": "82.00", 
     "region": "Iran-Pakistan border region" 
    } 
    ] 
} 

です。

は、私はその

let eqs = resultJSON["earthquakes"] 

のための一時VARを作成しようとする。しかし、私はeqsを反復処理することはできません。私の指摘は、私はその辞書に由来する配列を作りたいと思います。

どうすれば可能ですか?どんな助けもありがとう。ありがとうございました。

答えて

3

キーearthquakesStringキーを有し、[_typeキャストoperator_(https://developer.apple.com/library/ios/documentationと_downcast_理由

if let earthquakes = result["earthquakes"] as? [[String:String]] { 
    for earthquake in earthquakes { 
     let lat = earthquake["lat"]! 
     let lon = earthquake["lon"]! 
     // get other values 
     print(lat, lon) 
    } 
} 
+0

値配列を含有します/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html#//apple_ref/doc/uid/TP40014097-CH22-ID338)は[辞書の下付き文字がオプションの値を返す]ためです(https://developer.apple.com/library/ios /documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html)。 – alykhank

+2

@alykhankダウンキャストの主な理由は、辞書の下付き文字が 'AnyObject'を返すことです。 – vadian

+0

@vadianは' as?辞書のあらゆる価値について何か?とにかくありがとうございました。 –

関連する問題