swift - 如何将值从 JSON 添加到模型,在我下面的代码中

标签 swift model-view-controller tableview alamofire

我有一个 UITableview,我需要从 JSON 填充数据。

我正在使用 MVC 架构。但是我在将值附加到模型时遇到错误

 class DisplayAttendanceModel {
   let name: String?
   let date: String?
   let subject: String?
   let status: String?

   init(name: String, date:String, subject:String, status:String) {
     self.name = name
     self.date = date
     self.subject = subject
     self.status = status
 }
  var arrData = [DisplayAttendanceModel]()
  let headers : HTTPHeaders = ["Authorization":"token" + " " + ProfileAuth]
    let params : [String:Any] = [
        "date":"15/07/2019",
        "course_id":1,
        "batch_id":1,
        "subject_id":1
    ]

   Alamofire.request(displayURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
        if((response.result.value) != nil) {
            var jsonVAr = JSON(response.result.value!)
            if let da = jsonVAr["attendence"].arrayObject {
                self.data = da as! [[String:AnyObject]]
                print(self.data)
                for item in self.data {
                    print(item["student__first_name"] ?? "NO")
                    var names = item["student__first_name"]?.stringValue

                    self.arrData.append(DisplayAttendanceModel(name: names ?? "", date: names ?? "", subject: names ?? "", status: names ?? ""))

                }

我的 JSON 响应是:

 "attendence": [
        { 
            "attendance_time": "15:35:34.787322",
             "student__last_name": "acharya",
             "student__first_name": "mahendra",
             "subject__name": "Physiology",
             "attendance_date": "2019-07-15",
             "status": 1
         }

如何将这些值附加到模型类,我们将不胜感激。

最佳答案

你应该像这样创建模型:

模型

class Attendence: Codable {
    var attendence: [DisplayAttendanceModel]?
}

class DisplayAttendanceModel: Codable {
    let firstName: String?
    let lastName: String?
    let date: String?
    let time: String?
    let subject: String?
    let status: Int?

    enum CodingKeys: String, CodingKey {
        case firstName = "student__first_name"
        case lastName = "student__last_name"
        case date = "attendance_date"
        case time = "attendance_time"
        case subject = "subject__name"
        case status
    }
}

然后你可以这样使用:

请求

Alamofire.request(displayURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
    if response.result.value != nil {
        guard let data = response.data { return }

        do { 
            let myData = try JSONDecoder().decode(Attendence.self, from: data)
            print("myData is: \(myData)")
        } catch let error {
            print(error)
            // Do something in error case
        }

希望一切顺利

享受吧。

关于swift - 如何将值从 JSON 添加到模型,在我下面的代码中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57055751/

相关文章:

swift - 如何计算 Swift 中不包括新行的字符?

ios - 缓存 Storyboard之间的 View Controller

ios - 根据某种逻辑在 TableView 中显示某个单元格

ios - tableViewvisibleCells swift 上缺少单元格

swift - Getter 计算属性与返回值的变量

ios - 当我在Xcode调试区域按下暂停按钮时,如何跳转到特定断点?

Swift:使用 Realm 过滤记录

model-view-controller - 输入与输出的 HTML/XSS 转义

java - 我如何在 Spring 3 MVC 中获取 RESTful URLS?

php - Zend 框架路径问题