2016-10-27 5 views
-2

Swift의 OpenWeatherMap에서 2 비트의 데이터에 액세스하려고합니다. 첫 번째는 설명이고 두 번째는 온도입니다. 다음 코드 openweathermap에서 API에 액세스

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

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

을 사용하여 설명을 접근하고 지금은 데 문제가이 인쇄처럼 구성되어있는 온도 (에 액세스 : "!"온도 (날씨 [ "주]를 ["임시 "]! !) ").) print ("날씨 설명 : (날씨 [ "weather"]! [0]! [ "description"] !!) ") 온도 데이터에 액세스하려면 위의 코드를 어떻게 재구성해야합니까? 이걸 찾아 주셔서 고마워요.

+0

'((NSArray로 jsonResult [ "main"]? NSDictionary로? [0])? [ "temp" String' Mmm ... 너는 같은 줄에 많은 것을 채워서 아무것도 얻지 못한다. 그 반대 가니 ... : 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) 
          }