2015-03-04 5 views
0

Я пытаюсь получить данные из NSDictionary в Swift, но я не могу этого сделать. Вот кодДоступ к данным из NSDictionary

let urlPath = "http://ws-report.goocity.it/Stats/json/GetReport" 
    let url: NSURL = NSURL(string: urlPath)! 
    let session = NSURLSession.sharedSession() 
    let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in 
     var result: NSDictionary 
     if error != nil { 
      // If there is an error in the web request, print it to the console 
      println(error.localizedDescription) 
     } 

     var err: NSError? 
     var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary 
     if err != nil { 
      // If there is an error parsing JSON, print it to the console 
      println("JSON Error \(err!.localizedDescription)") 
     } 
     else{ 
      //var arr : NSArray = jsonResult.valueForKey("Stats") as NSArray 
      //var cash: String? = jsonResult.valueForKey("Cash") as? NSString 
      let stats = jsonResult["Stats"]! as [[String : AnyObject]] 
     } 
    }) 
    task.resume() 

Вы можете увидеть нажав JSON на urlPath.
я все еще получаю следующее сообщение об ошибке на let stats = ...

Тема 5: EXC_BAD_ACCESS (код = EXC_I386_GPFLT)

Я только что проверил несколько других сообщений здесь, на StackOverflow и в любом месте, но нет ответа хорошо для моей проблемы.

Мне нужно получить все значения полей JSON во многих переменных (например, cash, lastUpdate, totalPartners и т. Д.).

+0

Вы на 100% уверены, что jsonResults имеет значение для ключевых «Статистика»? И вы уверены, что результатом будет массив, содержащий объекты словаря? –

+0

Использование! рискованно - он говорит: «Это значение, безусловно, представляет собой набор словарей String: Anyobject. Я бы предложил вам удалить! и добавить a в конце. Затем вы можете проверить значение статистики для nil и предпринять соответствующие действия – Paulw11

+0

Для такие вопросы вы всегда должны включать в себя список JSON или репрезентативный образец. –

ответ

0

Ваш json не представляет собой набор словарей, это просто словарь.

изменение [[String: AnyObject]] до [String: AnyObject] и оно будет работать.

+0

Привет! Это работает! Большое вам спасибо! –

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