首页 > 解决方案 > 无法将解析的 JSON 数据显示到 UITableView

问题描述

我正在将 JSON 数据解析为模型对象嵌套结构。我还在对模型进行排序并附加到按字母顺序排序的 sortedArr 数组中。我正在尝试将姓名和其他信息(例如传记)显示到我的表格视图中。当试图在我的表格视图单元格中显示 indexPath 的名称时,我无法访问数组的成员,例如 fullName、biography 等。

struct Response: Decodable {
    struct Students: Decodable {
        var fullName :String
        var biography:String
        var emailAddress:String

        enum CodingKeys: String, CodingKey {
            case fullName = "full_name"
            case biography
            case emailAddress = "email_address"
        }
    }

    var students:[Students]
}

var sortedArr = [[Response.Students]]()

func parseData(){
    guard let url = URL(string: "xxxxxx") else {return}
    let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
        guard let dataResponse = data,
            error == nil else {
            print(error?.localizedDescription ?? "Error")
            return 
        }
        do {
            let response = try! JSONDecoder().decode(Response.self, from: dataResponse)

             self.sortedArr = response.students.sorted{$0.fullName < $1.fullName}

            DispatchQueue.main.async {
                self.tableView.reloadData()
            }
        } catch let parsingError {
            print("Error", parsingError)
        }
    }
    task.resume()
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return sortedArr.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: cellID, for: indexPath) as! EmployeeTableViewCell

    let emps = sortedArr[indexPath.row]
    cell.titleLabel.text = emps.fullName  //has no member fullName
    return cell
}

标签: iosarraysjsonswift

解决方案


推荐阅读