Friday, September 4, 2026
HomeiOS Developmentios - Cannot present a part of knowledge in a cell

ios – Cannot present a part of knowledge in a cell

[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.

Picture from view hierarchy: enter image description here

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]

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments