Ios 从视图控制器的Json响应中获取特定值

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

我正在向Alamofire提出请求,我有一个类来展示一些价值。我想在界面中显示值

这是我的密码:

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
        })