I have simple tableview. . When I want to delete cell from table view, I get that error.
View controller code:
class FoodCategoryDetailTableViewController: UITableViewController {
    var foodCategoryDetailViewModel: FoodCategoryDetailTableViewViewModelType?
    private let disposeBag = DisposeBag()
    override func viewDidLoad() {
        super.viewDidLoad()
        guard let foodCategoryDetailViewModel = foodCategoryDetailViewModel else { return }
        tableView.delegate = nil
        tableView.dataSource = nil
        foodCategoryDetailViewModel.foodsInSelectedCategory
            .bind(to: tableView.rx.items(cellIdentifier: FoodCategoryDetailTableViewCell.cellIdentifier, cellType: FoodCategoryDetailTableViewCell.self))
            { row, food, cell in
                cell.foodCategoryDetailCellViewModel = foodCategoryDetailViewModel.cellViewModel(forRow: row)
            }.disposed(by: disposeBag)
        tableView.rx.itemDeleted.subscribe({ [unowned self] indexPath in
            self.foodCategoryDetailViewModel?.removeFoodFromApplication(atRow: (indexPath.element?.row)!)
            self.tableView.reloadData()
        }).disposed(by: disposeBag)
    }
View Model code:
class FoodCategoryDetailTableViewViewModel: FoodCategoryDetailTableViewViewModelType {
    var foodsInSelectedCategory: BehaviorRelay<[Food]>
    private var foodCategoryId: Int16
    func cellViewModel(forRow row: Int) -> FoodTableViewCellViewModelType? {
        if let food = getFood(atRow: row) {
            return FoodTableViewCellViewModel(foodModel: food)
        }
        return nil
    }
    func removeFoodFromApplication(atRow row: Int) {
        if let food = getFood(atRow: row) {
            var foods = foodsInSelectedCategory.value
            foods.remove(at: row)
            self.foodsInSelectedCategory = BehaviorRelay(value: foods)
            CoreDataHelper.sharedInstance.removeFoodFromApplication(foodName: food.name!)
        }
    }
    private func getFood(atRow row: Int) -> Food? {
        let food = foodsInSelectedCategory.value[row]
        return food
    }
    init(foodCategoryId: Int16) {
        self.foodCategoryId = foodCategoryId
        self.foodsInSelectedCategory = BehaviorRelay(value: CoreDataHelper.sharedInstance.fetchFoodsFromSelectedCategory(foodCategoryId: self.foodCategoryId))
    }
}
I am using Core Data. I get error in function getFood(). It error exist because row in view controller have old count of items in tableview. It is not updating with new count of items (foods) after delete cell.
