2016-02-23 36 views
0

我想在我的应用程序中定期发布一些东西给我的API让我说每3分钟,并在回报我有时数据,数据不会交付,我发现数据零,这就是为什么我试图把一个try/catch概念,下面的代码:尝试并捕获不是扔信息和处理问题

 var err: NSError? 
     var json:NSDictionary! 
     do { 
      json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary 
     } 
     catch { 
      dispatch_async(dispatch_get_main_queue(), {() -> Void in 

       postCompleted(succeeded: false, msg: "Logged in.") 

      }) 
     } 

然而catch语句从未去工作,每次我进去do为零,应用程序崩溃。

+0

也许'数据'是零?解包零并不是一个例外 –

+0

完全同意上面的观点(只是写了相同的内容),也值得在if语句或guard语句中将演员包装到NSDictionary中,以确保在使用它之前正确初始化您的json对象。 – spottedrabbit

+0

你能让我知道如何写它吗? – Saty

回答

1

public class func JSONObjectWithData(data: NSData, options opt: NSJSONReadingOptions) throws -> AnyObject

因为data: NSData没有解开。如果数据为零,则函数将崩溃。您添加

guard let data = data else { return }

而且的try/catch因为这个功能可能会引发错误。如果数据编码格式不正确,这个函数会抛出错误,你可以赶上catch。

希望它对你有用。