2017-01-21 10 views
1

AlamofireのJSONレスポンスの一部を変数として保存してifステートメントを作成する方法を見つけようとしていますが、その方法を見つけることができないようです。Alamofireの結果を変数として保存しますか?

私は、次の要素で構成され、質問のための例として使用するコードの一部を作った:

import UIKit 
import Alamofire 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 


     Alamofire.request("http://api.openweathermap.org/data/2.5/weather?q=London,uk&appid=44143256ee15e9c3f521ca062463dd8d").responseJSON { response in 
      print(response.result) // result of response serialization 

      if let JSON = response.result.value { 
       print("JSON: \(JSON)") 
      } 
     } 
    } 
} 

私はAPIリクエストから次の応答を取得:このことから

JSON: { 
base = stations; 
clouds =  { 
    all = 0; 
}; 
cod = 200; 
coord =  { 
    lat = "51.51"; 
    lon = "-0.13"; 
}; 
dt = 1485031800; 
id = 2643743; 
main =  { 
    humidity = 83; 
    pressure = 1026; 
    temp = "270.54"; 
    "temp_max" = "273.15"; 
    "temp_min" = "267.15"; 
}; 
name = London; 
sys =  { 
    country = GB; 
    id = 5091; 
    message = "0.0038"; 
    sunrise = 1484985141; 
    sunset = 1485016345; 
    type = 1; 
}; 
visibility = 7000; 
weather =  (
      { 
     description = haze; 
     icon = 50n; 
     id = 721; 
     main = Haze; 
    } 
); 
wind =  { 
    speed = 1; 
}; 
} 

をJSONの応答私は天気の記述を保存したいので、次の文を使用することができます:

if var currentWeather = sunny { 
    return "Nice day!" 
} else { 
    return "Uh-Oh, keep warm!" 
} 

誰もがこれで私を助けることができたら、私はそれを大いに感謝します!私がSwiftyJSONを使ってそれを簡単にしなければならないのであれば、これはしばらくの間苦労しており、それを理解する必要があります!

答えて

0

あなたのJSON応答のプリントアウト、次のあなたの結果を解析することができます

guard let JSON = response.result.value as? [String:Any], 
    let weather = JSON["weather"] as? [[String:Any]] else { 
    print("Could not parse weather values") 
    return 
} 

for element in weather { 
    if let description = element["description"] as? String { 
     print(description) 
    } 
} 

あなたが結果を保存するか、またはあなたが説明するように、特定の結果に基づいて何かをしたい場合、あなたは代わりに何かを挿入することができprint(description)のようなもの:

if description == "sunny" { 
    //do something 
} 

これが意味をなさないかどうか教えてください。 Xcodeコンソールの()は「配列」を意味することに注意してください。

+0

急いでいただきありがとうございます.Xcodeがアップデートを完了したら、これを試してみてください!私はそれがどのように働いているのかをほとんど理解しており、うまくいけば、これを自分で行う方法を理解し始めます。 – Miles

+0

良い姿勢。あなたが問題を抱えているかどうか教えてください。 –

+0

私はこのコードを試しましたが、 'let weather = JSON [" weather " [[文字列:任意]] else {'私はAnyObjectにも変更しようとしましたが、同じエラーです。ああ、右。 – Miles

関連する問題