Как манипулировать вложенными словарями в Swift, например. Данные JSON?
Я использую NSJSONSerialization для анализа JSON в приложении Swift. Однако возвращаемый словарь состоит из сложной, глубоко вложенной структуры, что делает невозможным иметь очень длинные объявления типов (например, Dictionary<String, Array<Dictionary<String, ....>>
).
Есть ли хороший способ работы с такой структурой в Swift, где структура коллекции очень сложна и ее типы неизвестны до времени выполнения?
Ответы
Ответ 1
Просто возьмите ссылку на свои данные json как NSDictionary:
var dict: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
то вы можете ссылаться на него с помощью индексов:
var myValue: NSString = dict["level1"]["level2"]
Ответ 2
myDictionary["accounts"]
может быть необязательным. Попробуйте: myDictionary["accounts"]?["active"]?
Ответ 3
В Obj-C мы могли бы написать
cityName = myDictionary[@"photos"][@"region"][@"city"]
Как показало несколько здесь, вышеприведенное не применяется в Swift, по крайней мере, это никогда не имеет для меня.
Вот как вы это делаете в Swift для доступа к трем индексам в NSDictionary для строки,
let cityName = ((myDictionary!["photos"] as NSDictionary)["region"]! as NSDictionary)["city"]! as String`
Надеюсь, что в следующем обновлении Swift все это можно свести к тому, что у нас было в Obj-C.