#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 .. это сработало..