Подскажите плз, в чём может быть причина или куда копать.
У меня не обновляется таблица, как будто tableView.reloadData() не срабатывает,
хотя дебажил вроде бы норм и массив movies переписывается на данные с инета, а вот dataSource почему то не вызывается( В чём может быть причина, подскажите плз
Архитектура примерно такая)
ViewModel -> Presenter -> ViewController
ViewModel -> DataSource
Есть ViewModel, где делаю запрос на сервер, чтобы получить список фильмов
class ListMoviesViewModelTable: ListMoviesViewModelTableProtocol {
let network: Network = Network()
var movies: [Movie] = []
var numberPage: Int = 1
func fetchMovies(with page: Int, completion: @escaping () -> ()) {
network.numberPage = page
network.loadMovies { (result) in
switch result {
case .success(let result):
DispatchQueue.main.async {
self.movies.append(contentsOf: result.movies)
completion()
}
case .failure(let errorText):
print(errorText)
}
}
}
func numberOfCell() -> Int {
return movies.count
}
func cellForRowAt(index: Int) -> ListMoviesViewModelTableCellProtocol {
let movie = movies[index]
return ListMoviesViewModelTableCell(movie: movie)
}
func didSelectCell(at index: Int) -> DetailMovieViewModelProtocol {
let movie = movies[index]
return DetailMovieViewModel(movie: movie)
}
}
В Presenter создаю метод, чтобы дальще передать ViewController
func fetchMovies() {
viewModelTable.fetchMovies(with: viewModelTable.numberPage) {
self.view.reloadData()
}
}
В ViewController вызываю presenter.fetchMovies()
class ListMoviesViewController: UIViewController, ViewControllerProtocol {
@IBOutlet weak var tableView: UITableView!
var presenter: PresenterProtocol!
var dataSource: ListMoviesDataSource!
let configuration: ConfigurationProtocol = ListMoviesConfiguration()
override func viewDidLoad() {
super.viewDidLoad()
configuration.configurate(with: self)
delagating()
presenter.fetchMovies()
}
private func delagating() {
tableView.dataSource = dataSource
tableView.delegate = self
}
func reloadData() {
tableView.reloadData()
}
}
Сам DataSource выглядет вот так, который содержит viewModelTable
class ListMoviesDataSource: NSObject, UITableViewDataSource {
weak var view: ViewControllerProtocol!
var viewModelTable = ListMoviesViewModelTable()
var tableView: UITableView!
init(view: ViewControllerProtocol) {
super.init()
self.view = view
self.setTableView(from: view)
}
private func setTableView(from view: ViewControllerProtocol) {
tableView = view.getTableView()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return viewModelTable.numberOfCell()
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ListMoviesTableViewCell
cell.viewModelCell = viewModelTable.cellForRowAt(index: indexPath.row)
cell.configure()
return cell
}
}