2016-02-23 33 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。

希望它對你有用。