2015-03-31 4 views
0

Я пытаюсь получить доступ к api, используя следующий код. Я получаю сообщение об ошибке «Неустранимая ошибка: неожиданно найден nil во время разворачивания необязательного значения», когда я пытаюсь разобрать json.Свистящая ошибка NSURLCONNECTION при разборе json

Я не уверен, почему эта ошибка происходит. Данные не ноль.

var urlFull = NSURL(string: url)! 
    var urlrequest = NSURLRequest(URL: urlFull) 
    let queue:NSOperationQueue = NSOperationQueue() 

    NSURLConnection.sendAsynchronousRequest(urlrequest, queue: queue, completionHandler: { 
     (response, data, error) -> Void in 
     println(response) 
     println(data) 
     println(error) 

     if let anError = error { 
      println(error) 
     } else { 
      var jsonError: NSError? = nil 
      let post = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &jsonError) as NSDictionary 
      if let aJSONError = jsonError { 
       println("Error parsing") 
      } else { 
       println("The post is: " + post.description) 
      } 


     } 
    }) 
+0

Не могли бы вы, пожалуйста, отметьте строку кода, где вы получите сообщение об ошибке. Спасибо –

+0

on line let post = NSJSONSerialization.JSONObjectWithData (данные, опции: nil, error: & jsonError) как NSDictionary – neo

ответ

0

Проблема заключается в вашем вынужденном литье: as NSDictionary. Все, что возвращается, не может быть отброшено до NSDictionary.

Вы должны всегда использовать дополнительный кастинг (as?) и дополнительный развёрток (if let…) при анализе JSON:

let post = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &jsonError) as? NSDictionary 

if let post = post { 
    // it worked! parse post 
} else { 
    // it's not a dictionary. 
    println(post) 
    // see what you have and debug from there 
} 
Смежные вопросы