将Alamofire结果保存为变量? [英] Save Alamofire Result as Variable?

查看:84
本文介绍了将Alamofire结果保存为变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试找出如何将Alamofire的JSON响应的一部分另存为变量以创建if语句,而且似乎找不到解决方法。

I've been trying to find out how to save a part of a JSON response from Alamofire as a variable to make an if statement and can't seem to find how to do it.

我编写了一段代码作为示例,该问题包括以下内容:

I made a piece of code to use as an example for the question which consists of the following:

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响应中,我想保存天气说明,以便可以使用以下语句:

From this JSON response I would like to save the weather description so I could use the following statement:

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

如果有人可以帮助我,我将不胜感激!如果我必须使用SwiftyJSON来简化它,那很好,我已经为此苦苦挣扎了一段时间,需要弄清楚!

If anyone could help me with this I would greatly appreciate it! If I have to use SwiftyJSON to make it easier that's fine I've just been struggling with this for a while and need to figure it out!

推荐答案

您可以在打印JSON响应之后解析结果:

You can parse your result following the printout of your JSON response:

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 you wanted to save the result, or do something based on a certain result as you described, you could insert something else instead of just print(description) like:

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

让我知道这是否有意义。请记住,在Xcode控制台中,的意思是数组。

Let me know if this makes sense. Keep in mind that ( and ) in the Xcode console means "Array".

这篇关于将Alamofire结果保存为变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆