Получение нуля, нуля или неизвестного из SwiftyJSON

{
    "locations": [
      {
         "id": "#######################",
         "slug": "some slug",
         "name": "some name",
         "address": "some address",
         "characteristic": false,
         "program_types": [
            "Program 1"
         ],
         "category 1": false,
         "category 2": true,
         "category 3": false,
         "category 4": 4,
         "category 6": 0,
         "latitude": #######,
         "longitude": -###.####
      },
   ]
}

Выше мой JSON (только одна запись из многих), который я хочу использовать со SwiftyJSON. Я использую Alamofire для получения данных, и они хорошо отображаются, когда я печатаю из Alamofire.

Вот код, который не работает. Я пробовал несколько вещей, найденных на разных сайтах.

var json = JSON(data!)  //data is from alamofire
let Name = json[0].string
println(Name)

возвращает `ноль

Этот код возвращает null.

var json = JSON(data!)
let Name:JSON = json[0]["name"]
println(Name)

Я не уверен, как просто вернуть простое значение из JSON. Любая помощь будет оценена по достоинству.


person Craig.Pearce    schedule 27.07.2015    source источник
comment
data!? данных нет? и, учитывая вашу структуру, вы, вероятно, захотите json['locations'][0]['slug'] -> some slug.   -  person Marc B    schedule 27.07.2015
comment
@MarcB: ! (в данном контексте) — это оператор принудительной развертки в языке программирования Swift.   -  person Martin R    schedule 27.07.2015
comment
что вы получаете, когда вы po data!? а когда ты po json?   -  person dudeman    schedule 27.07.2015
comment
@MarcB Вот и все. let Name:JSON = json["locations"][0]["category"] работает. Спасибо большое.   -  person Craig.Pearce    schedule 27.07.2015


Ответы (2)


@marcB нашел правильный ответ. Это был просто вопрос неправильного порядка.

Этот код
let Name:JSON = json[0]["name"]

должно быть
let Name:JSON = json["locations"][0]["category"]

person Craig.Pearce    schedule 27.07.2015

Проверьте тип json[0]

Я предполагаю, что это будет AnyObject

Что означает, что вам нужно понизить это так

Let Name = json[0] as! [String:NSDictionary]
person IamMashed    schedule 27.07.2015