Я использую RxSwift в проекте, где у меня есть DataSource
с другим ViewItems
.Это моя DataSource
конфигурация:
let dataSource = RxTableViewSectionedReloadDataSource<SectionedViewItem>(configureCell: { _, tableView, indexPath, item in
if let viewItem = item as? BannerViewItem {
guard let cell = tableView.dequeueReusableCell(withIdentifier: BannerCell.Key, for: indexPath) as? BannerCell else { fatalError() }
cell.configureBindings(itemSource: viewItem)
return cell
} else if let viewItem = item as? CarSpecificationViewItem {
guard let cell = tableView.dequeueReusableCell(withIdentifier: CarSpecificationCell.Key, for: indexPath) as? CarSpecificationCell else { fatalError() }
cell.configureBindings(itemSource: viewItem)
return cell
} else if let viewItem = item as? CarBenefitViewItem {
guard let cell = tableView.dequeueReusableCell(withIdentifier: CarBenefitCell.Key, for: indexPath) as? CarBenefitCell else { fatalError() }
cell.configureBindings(itemSource: viewItem)
return cell
} else if let viewItem = item as? FavoriteHeaderViewItem {
guard let cell = tableView.dequeueReusableCell(withIdentifier: CarFavoritesCell.Key, for: indexPath) as? CarFavoritesCell else { fatalError() }
cell.configureBindings(itemSource: viewItem)
return cell
} else {
return UITableViewCell()
}
})
Затем я привязываю ее к своему ViewModel
:
viewModel.dataSource.bind(to: tableView.rx.items(dataSource: dataSource)).disposed(by: disposeBag)
Я подписываюсь на события выбора следующим образом:
tableView.rx
.modelSelected(CarSpecificationViewItem.self)
.subscribe(tableViewRowSelected)
.disposed(by: disposeBag)
Этот подход работал нормально, пока я реагировал только на CarSpecificationViewItem
.Теперь я активировал userInteraction
для CarFavoritesCell
и подписался на его события:
tableView.rx
.modelSelected(FavoriteHeaderViewItem.self)
.subscribe(test)
.disposed(by: disposeBag)
Но это стало приводить к ошибкам.Я получаю сбой при нажатии на мой FavoriteHeaderViewItem:
Поток 1: неустранимая ошибка: сбой преобразования из необязательного (CLCarRentalCore.FavoriteHeaderViewItem) в CarSpecificationViewItem
Что может быть источникомпроблемы?Заранее спасибо!