保存Alamofire结果作为变量?(Save Alamofire Result as Variab

2019-09-29 19:40发布

我一直在试图找出如何从Alamofire JSON响应的一部分保存为一个变量,使if语句,似乎无法找到如何做到这一点。

我提出的一段代码作为其由以下的问题的示例的使用方法:

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,使其更容易这很好,我刚刚用这个挣扎了一段时间,需要弄明白!

Answer 1:

你可以分析你的结果你的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控制台中的意思是“阵列”。



文章来源: Save Alamofire Result as Variable?