Ios 从视图控制器的Json响应中获取特定值
我正在向Alamofire提出请求,我有一个类来展示一些价值。我想在界面中显示值 这是我的密码:Ios 从视图控制器的Json响应中获取特定值,ios,json,swift,alamofire,Ios,Json,Swift,Alamofire,我正在向Alamofire提出请求,我有一个类来展示一些价值。我想在界面中显示值 这是我的密码: class API: NSObject { class func group1(groupid: Int) { Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers) .respons
class API: NSObject {
class func group1(groupid: Int) {
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers)
.responseJSON { response in
switch response.result {
case .success(let data):
let json = JSON(data)
//print(json)
let ds_valIntake1 = json["data"][0]["ds_val"].int
let ds_valIntake1Sig = json["data"][1]["ds_val"].int
let ds_valLevel = json["data"][2]["ds_val"].int
}
}
}
}
我想从这些“d_val”中获取值,然后将其值显示到接口中。我不想使用userdefaults将这些值移动到另一个类中。- 使用下面的
为什么不创建一个
Codable
类,该类的格式与响应的格式相同呢?然后,您可以使用JSONSerialization
将数据获取到一个可编码对象中,然后将其传递回一个完成块中
创建可编码类:
class Response: Codable {
//Populate this with all the fields you need
}
然后在你的Alamofire通话中,你可以写:
class API {
func group1(groupid: Int, onSuccess: @escaping Response) {
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers)
.responseJSON { response in
switch response.result {
case .success(let data):
if let data = JSONDecoder.decode(Response.self, from: responseObject) {
onSuccess(data)
}
}
}
}
}
使用完成块,苹果为这些目的创建了一个
static func group1(groupid: Int, completion:@escaping (_ r:Any) -> Void) -> Void
{
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers)
.responseJSON { response in
switch response.result {
case .success(let data):
let json = JSON(data)
//print(json)
completion(json as Any}
}
}
}
打电话
className.group1(groupid: Int, completion: { (jsonResult) in
let json = jsonResult as yourType
let ds_valIntake1 = json["data"][0]["ds_val"].int
let ds_valIntake1Sig = json["data"][1]["ds_val"].int
let ds_valLevel = json["data"][2]["ds_val"].int
})
仔细阅读,然后从界面(ViewController)调用此group1方法,对吗?下面是一个很好的教程-->
static func group1(groupid: Int, completion:@escaping (_ r:Any) -> Void) -> Void
{
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers)
.responseJSON { response in
switch response.result {
case .success(let data):
let json = JSON(data)
//print(json)
completion(json as Any}
}
}
}
className.group1(groupid: Int, completion: { (jsonResult) in
let json = jsonResult as yourType
let ds_valIntake1 = json["data"][0]["ds_val"].int
let ds_valIntake1Sig = json["data"][1]["ds_val"].int
let ds_valLevel = json["data"][2]["ds_val"].int
})