Быстрая проблема с JSON / NSJSONSerialization

#json #swift #nsjsonserialization

#json #swift #nsjsonserialization

Вопрос:

Я пытаюсь прочитать этот файл JSON в Swift и сохранить данные в NSDictionary, где я хочу иметь name ключ as и directory значение as.

 {
 "subjects": [
  { "prefix":"", "name":"mada" , "directory":"E1862_Unterrichte_I/E1862_2iCa" },
  { "prefix":"", "name":"oopI2" , "directory":"E1862_Unterrichte_I/E1862_2iCa" },
  { "prefix":"", "name":"req" , "directory":"E1862_Unterrichte_I/E1862_2iCa" },
  { "prefix":"", "name":"ws2C" , "directory":"E1862_Unterrichte_I/E1862_2iCb" },
  { "prefix":"", "name":"sprx" , "directory":"E1868_Unterrichte_Kontext/E1868_8KKa15" },
  { "prefix":"", "name":"etw", "directory":"E1868_Unterrichte_Kontext/E1868_8KEd" },
  { "prefix":"", "name":"infre", "directory":"E1868_Unterrichte_Kontext/E1868_8KGc"}
 ]
}
  

Для достижения этой цели я использую NSJSONSerialization:

 let data = NSData.dataWithContentsOfFile("subjects.json", options: .DataReadingMappedIfSafe, error: nil)

var error: NSError?
let jsonDict = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: amp;error) as NSDictionary
  

Пока я могу читать в файле, и результирующий NSDictionary выглядит так ["subjects, "7 objects"] . К сожалению, я не знаю, как я могу добиться того, что мне действительно нужно («NSDictionary с именем в качестве ключа и каталогом в качестве значения»).

Ответ №1:

Вы можете извлечь необходимые данные следующим образом

 if let subjects = jsonResult["subjects"] as? NSDictionary[] {
    for subject in subjects {
        // subject is an NSDictionary
        var prefix = subject["prefix"] as String
        var name = subject["name"] as String
        // etc
    }
} else {
    // There was no 'subjects' key in the dictionary
}