2016-10-27 4 views
-2

SwiftのOpenWeatherMapから2ビットのデータにアクセスしようとしています。最初は説明であり、2番目は温度です。 「:[メイン「]![」TEMP "]私は今私が午前問題は、この印刷((天候温度」のように構成された温度にアクセスして、次のコードopenweathermapのAPIにアクセスする

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

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

を使用して説明にアクセスしています! !) ")。)")天気の説明:(天気["天気"]![0]!["description"] !!) ") 温度データにアクセスするにはどうすれば上記のコードを再設定しますか?これを見てくれてありがとう。

+0

'((jsonResult [" main "] as NSArray)?[0] as NSDictionary)?[" temp "] as? String' Mmm ...あなたは同じ行にそれほど詰め込むことで何も勝つことはありません。逆に...:p – Moritz

+0

何をお勧めしますか? – AltBrian

+0

明らかに、私はそれをやめることをお勧めします。 :)例えば、 'if let'や' guard let'を使って値を安全にアンラップし、段階的にアンラップし、可能なエラーを処理するために 'else'節を追加します。すべてを1つのライナーに入れないでください。コードが速くならず、保守やデバッグが難しいです。また、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) 
          } 
関連する問題