如何在iOS中实现可以处理多个API调用的数据模型?

时间:2017-02-27 12:12:11

标签: ios swift

我一般都是Swift和iOS编程的新手 目前我正在开发一个应用程序,它可以进行API调用并获取数据并显示它们。

所以我使用GET请求来获取数据,例如,

www.example.com/city1 would give the details of city1 ,   
www.example.com/city2 would give the details of city 2 and so on.

获取数据后,我解析它们并从JSON中提取所需的字段。

我的问题

我有一个屏幕,我必须为不同的城市显示相同的参数。

Ex :我的屏幕2有八个UI标签,每个标签应显示来自不同城市的相同信息(温度)。

唯一的变化是我在进行API调用时在GET请求中发送的城市名称参数。我已经在项目的单独Swift文件中使用Alamofire实现了GET请求。 那么实现同样的最佳方法是什么? 我使用Swift 3进行上述项目。

1 个答案:

答案 0 :(得分:1)

import Alamofire

struct City {

    //eight fields
    let name: String


    init?(json: [String: Any]) {
        // init and check required fields
        if let name = json["name"] as? String {
            self.name = name
        } else {
            return nil
        }
    }

    static func fetchCity(for id: String, success: @escaping (City) -> Void, fail: @escaping (Error?) -> Void) {
        Alamofire.request("wwww.example.com/\(id)").responseJSON { (response) in
            if let error = response.error {
                fail(error)
            }

            if let json = response.result.value as? [String: Any] {
                if let city = City(json: json) {
                     success(city)
                }

                //Missing required fields
                fail(customError)
            }
        }
    }
}



City.fetchCity(for: "city1", success: { city in

}, fail: { error in

})

您可以使用SwiftyJSON进行解析json响应