2015-03-31 145 views
0

我想使用下面的代碼訪問api。 當我嘗試解析json時,出現錯誤「致命錯誤:意外地發現零,同時展開可選值」。解析JSON時Swift NSURLCONNECTION致命錯誤

我不知道爲什麼會發生錯誤。 數據不是零。

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

可否請你標記的代碼行,你得到的錯誤。謝謝 – 2015-03-31 21:53:52

+0

在線let post = NSJSONSerialization.JSONObjectWithData(data,options:nil,error:&jsonError)as NSDictionary – neo 2015-03-31 21:58:39

回答

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 
}