2015-04-28 4 views
-1

Я новичок в Swift. Я пытаюсь сделать простой вызов REST и получить доступ к возвращаемым данным. Я тестирую API Zippopotam, который возвращает информацию о городе на основе zipcode. Я получаю результат с REST вызова и поместить его в словарь:Как мне получить доступ к информации в этом словаре? - Swift

var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, 
      options:NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary 

Вот некоторые из данных, которая печатает при печати на JSON:

{ 
    country = "United States"; 
    "country abbreviation" = US; 
    places =  (
       { 
      latitude = "40.5541"; 
      longitude = "-111.9539"; 
      "place name" = "South Jordan"; 
      state = Utah; 
      "state abbreviation" = UT; 
     } 
    ); 
    "post code" = 84095; 
} 

Прежде всего, есть лучший способ получить доступ к ключевой пары значений, чем

json["post code"].text! 

это кажется настолько низкий уровень, чтобы получить информацию, но возможно, что это единственный способ сделать это в Swift.

Далее, мои places являются tuple. Когда я обращаюсь к places, я получаю информацию в круглых скобках (info ...). Как мне получить доступ к state в первом кортеже? Я пробовал json["places"].0["state"], но это не так.

ответ

1

JSON имеет только три основных типа - массивы, словари и строки. Они сопоставляются NSJSONSerialization с номером NSDictionary (который соединен с Swift-словарем), NSArray (соединен с массивом Swift) и NSString (соединен с строкой).

Простейший способ доступа к данным, возвращаемым NSJSONSerialization, - это просто прочитать словари & массивов, которые у вас есть.

В случае «мест» это массив словарей, так, чтобы получить «состояние» можно сказать

if let places=json["places"] as? [[String:AnyObject]] { 
    if (places.count > 0) { 
     let place=places[0] 
     let state=place["state"] as! String 
    } 
} 

«лучше» способ взять JSON и использовать его создавать объекты с подходящим свойства. К сожалению, в отличие от XML, который может использовать определенную схему для автоматического создания этого кода синтаксического анализа, вы должны сделать это самостоятельно

Смежные вопросы