Как отобразить кодируемые данные JSON в tableview в swift?

#json #swift #uitableview #codable

#json #swift #uitableview #кодируемые

Вопрос:

api — это: https://reqres.in/api/users?page=2

получить ответ:

       {
       "page": 2,
       "per_page": 6,
       "total": 12,
       "total_pages": 2,
    "data": [
         {
        "id": 7,
        "email": "michael.lawson@reqres.in",
        "first_name": "Michael",
        "last_name": "Lawson",
        "avatar": "https://reqres.in/img/faces/7-image.jpg"
         },
         {
        "id": 8,
        "email": "lindsay.ferguson@reqres.in",
        "first_name": "Lindsay",
        "last_name": "Ferguson",
        "avatar": "https://reqres.in/img/faces/8-image.jpg"
         },
 

код: hare мне нужно все first_name в ярлыке tableview, который я не могу получить, при вызове службы я получаю общие данные User1, но мне нужно только first_name из userdata1 tableview, как это сделать

 import UIKit
struct User1: Codable{

let page: Int
let total: Int
let data: [userdata1]

}
struct userdata1: Codable{

let id: Int
let email: String
let first_name: String
let last_name: String
let avatar: String
    
}
class TableviewViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {


var users = [userdata1]()


@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
    codablegetservice()
    // Do any additional setup after loading the view.
}


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return users.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! UITableViewCell
    
    let show = users[indexPath.row]
    
    cell.textLabel?.text = show.first_name
    
    return cell
}


func codablegetservice(){
    
    print("sbjbsjbmsbgdmgdmgdm")
    let url = URL(string: "https://reqres.in/api/users?page=2")!
            let task = URLSession.shared.dataTask(with: url) {(data, response, error) in
                guard let data = data else { return }
                do{
                    var jsonDataModels = try JSONDecoder().decode(User1.self, from: data)
                
                     print(jsonDataModels)
                    DispatchQueue.main.async{

                    self.tableView.reloadData()
                    }
                }catch{}
            }
            task.resume()
 }
 }
 

как получить все first_names в tableview, пожалуйста, помогите с кодом

Комментарии:

1. У вас есть var users = [userdata1]() , но вы никогда не заполняли его. Прежде self.tableView.reloadData() чем вы должны сделать self.users = jsonDataModels.data .

2. @Larmethank you .. это сработало..