2016-05-02 3 views
1

Я относительно новичок в быстром, и у меня здесь небольшая проблема. У меня JSON уже сериализуется как словарь. Это, как я получаю СловареПолучить значение из словаря в виде массива в Swift 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"] 

Но я не могу перебирать eqs. Я хочу сказать, что я хочу создать массив из этого словаря.

Как это возможно? Любая помощь будет оценена по достоинству. Спасибо.

ответ

3

Ключ earthquakes содержит массив, который имеет String ключей и значений

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

причина для _downcast_ с [_type литой operator_] (https://developer.apple.com/library/ios/documentation /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? что-то за каждое значение в словаре? В любом случае, спасибо. –