2016-02-23 1 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.") 

      }) 
     } 

Однако заявление поймать никогда не работать, и каждый раз, когда я получаю аварию ноля, приложение внутри do.

+0

возможно «данные» - это нуль? разворачиваемый ниль не является исключением –

+0

Полностью согласен с вышеизложенным пунктом (было просто написано то же самое) также стоит обернуть трансляцию в NSDictionary в инструкции if let или guard, чтобы убедиться, что ваш 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.

надеюсь, что это пригодится вам.