2015-09-29 4 views
0

Моя функция getWeatherInfo() извлекает данные из веб-службы погоды, анализирует json и сортирует определенную информацию в моем массиве, info. После того, как я установил свою функцию, я запустил программу и получил эту ошибку: операция не может быть выполнена. (Ошибка NSURLErrorDomain -1005.) Неустранимая ошибка: неожиданно найден nil при развертывании необязательного значения. Это говорит мне эту ошибку, когда я заявляю о своей переменной jsonResult Вот код:SWIFT: «Ошибка NSURLDomain -1005» при разборе JSON

var info = [AppModel]() 

    func getWeatherInfo(completion: (results : NSArray?) ->Void){ 
     let urlPath = "http://api.openweathermap.org/data/2.5/weather?zip=92606,us&units=imperial" 
     let url: NSURL = NSURL(string: urlPath)! 
     let session = NSURLSession.sharedSession() 
     let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in 
      if error != nil { 
       // If there is an error in the web request, print it to the console 
       println(error.localizedDescription) 
      } 
      var err: NSError? 
      var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary // here is where I recieve my error 
      if err != nil { 
       // If there is an error parsing JSON, print it to the console 
       println("JSON Error \(err!.localizedDescription)") 
      } 
      let json = JSON(jsonResult) 
      var temp = json["main"]["temp"].stringValue 
      var humidity = json["main"]["humidity"].stringValue 
      var pressure = json["main"]["pressure"].stringValue 

      var information = AppModel(temperature: temp, pressure: pressure, humidity: humidity) 
      println(information) 
      self.info.append(information) 
      completion(results: self.info) 
     }) 
     task.resume() 


      } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     getWeatherInfo{ (info) in 
      println(info) 
      } 



    } 

Это работает отлично, прежде чем в прошлом, и я был успешно получить данные от веб-службы и сортировки информации в моем массиве , Может ли кто-нибудь указать мне в правильном направлении, как я могу это исправить?

+0

Так что объясните, что изменилось. Вы переключились на Xcode 7? Вы переключились на iOS 9? Какие? – matt

+0

Единственные изменения, которые я сделал, это код, который я добавил в viewDidLoad(), 'getWeatherInfo {(info) в println (info) }' Кроме этого ничего. – videoperson

ответ

1

Иногда проблемы с сетью являются нормальными. Подождите некоторое время и повторите попытку. Ошибка в коде здесь:

 if error != nil { 
      println(error.localizedDescription) 
     } 

Должно быть:

 if error != nil { 
      println(error.localizedDescription) 
      return 
     } 

Если есть ошибка, которую вы должны остановить, или вы также аварии.

Смежные вопросы