2016-10-27 4 views
-2

Я пытаюсь получить доступ к двум битам данных из OpenWeatherMap в Swift. Первое - это описание, а второе - температура. Я доступ описания, используя следующий кодДоступ к API из openweathermap

if let description = ((jsonResult["weather"]as? NSArray)?[0]as? NSDictionary)?["main"]as? String { 

         DispatchQueue.main.sync(execute:) { 
          self.resultLabel.text = description 

Теперь проблемы я имею доступ температуры, которая конфигурируется как эта печати (: «!«Температура (погода [»главная] [» Темп "]! !) ») в отличие от печати (« Описание погоды: (погода [«weather»]! [0]! ["description"] !!) ") Как перенастроить приведенный выше код для доступа к данным о температуре. Спасибо, что посмотрели на меня.

+0

'((JsonResult [ "главный"] в качестве? NSArray)? [0], как? NSDictionary)? [ "Темп"], как? Строка «Ммм ... ты ничего не выиграешь, набив столько же на одной линии, совсем наоборот ...: p – Moritz

+0

Так что бы вы предложили? – AltBrian

+0

Очевидно, я предлагаю вам прекратить это делать. :) Например, используйте 'if let' или' guard let' для * безопасно * разворачивайте свои значения, шаг за шагом и добавляйте предложения 'else' для обработки возможных ошибок. Не помещайте все в однострочные, код не работает быстрее, и его сложно поддерживать и отлаживать. Кроме того, используйте типы Swift (типизированный массив вместо NSArray и т. Д.). – Moritz

ответ

0

После долгих исследований это сработало для меня.

if let main = jsonResult["main"] as? NSDictionary { 
         print(main) 
         if let temp = main["temp"] as? Double { 
          DispatchQueue.main.sync(execute:) { 
          self.tempLabel.text = String(format: "%.1fº Centigrade", temp) 
          } 
Смежные вопросы