[ad_1]
I attempt to present knowledge from API Response. I’ve json and DataService.
When ViewController is load, my presenter give away knowledge from my Service.
I do not know why, however I make two request to my service. First time I get just one empty cell and the second time I get different knowledge.
My DataService:
class DataService {
func getRouts(completion: @escaping (APIResponse) -> Void?) {
let urlString = "https://journey.wildberries.ru/statistics/v1/low-cost"
guard let url = URL(string: urlString) else { return }
let activity = URLSession.shared.dataTask(with: url) { knowledge, response, error in
guard let knowledge = knowledge, error == nil else { return }
do {
let jsonResults = attempt JSONDecoder().decode(APIResponse.self, from: knowledge)
completion(jsonResults)
}
catch {
print{error}
}
}
activity.resume()
}
}
My presenter
protocol PresenterProtocol: AnyObject {
func viewDidLoad()
}
last class ListTicketsModulPresenter: PresenterProtocol {
let dataService = DataService()
weak var listTicketsViewController: ListTicketsViewController?
func viewDidLoad() {
dataService.getRouts { [weak self] ends in
DispatchQueue.essential.async {
print(outcomes)
self?.listTicketsViewController?.configure(with: outcomes)
}
}
}
}
My ViewController:
last class ListTicketsViewController: UIViewController, ListTicketsViewControllerProtocol {
var presenter: PresenterProtocol
let tableView: UITableView = {
let tableView = UITableView()
tableView.backgroundColor = UIColor.white
tableView.separatorColor = .white
tableView.allowsSelection = false
tableView.translatesAutoresizingMaskIntoConstraints = false
return tableView
}()
var numberOfRows: Int?
var startCityNameArray: [String]?
var endCityNameArray: [String]?
var startDateArray: [String]?
var endDateArray: [String]?
var worth: [Int]?
...
override func viewDidLoad() {
tremendous.viewDidLoad()
view.backgroundColor = .white
view.addSubview(tableView)
setupTableView()
presenter.viewDidLoad()
}
func setupTableView() {
tableView.delegate = self
tableView.dataSource = self
tableView.register(ListTicketsModulCell.self, forCellReuseIdentifier: "cellId")
tableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
tableView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
tableView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
tableView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
}
//Features
func configure(with mannequin: APIResponse) {
self.startCityNameArray = mannequin.knowledge.map { $0.startCity }
self.endCityNameArray = mannequin.knowledge.map { $0.endCity }
self.numberOfRows = mannequin.knowledge.rely
self.startDateArray = mannequin.knowledge.map { $0.startDate }
self.endDateArray = mannequin.knowledge.map { $0.endDate }
self.worth = mannequin.knowledge.map { $0.worth }
self.tableView.reloadData()
}
...
}
[ad_2]

