我一般都是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进行上述项目。
答案 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响应