NSMutableDictionary не обновляет представление таблицы

#ios #arrays #objective-c #nsmutablearray #nsmutabledictionary

#iOS #массивы #objective-c #nsmutablearray #nsmutabledictionary

Вопрос:

У меня есть этот код для редактирования / удаления car

 - (void)dismissViewWithIndex:(NSInteger)index selectedVehicle:(NSInteger)selectedVehicle toDelete:(BOOL)toDelete {
    if (toDelete amp;amp; [self.cars count] > 0) {
        [self.cars removeObjectAtIndex:(index-1)];
    } else {

        NSMutableDictionary *editCar =[NSMutableDictionary dictionaryWithDictionary:[self.cars objectAtIndex:index-1]];
        editCar[@"vehicleType"] = selectedVehicle == 0 ? @"SmallTruck" : @"BigTruck";
    }
    [self.tableView reloadData];
} 
 

И у меня есть этот делегат для обновления tableview

 #pragma mark - Delegate
- (void)updateSelectedVehicle:(BOOL)toDelete {
    [self.delegate dismissViewWithIndex:(int)self.selectedCarIndex selectedVehicle:self.vehiclePreviousIndexPath.item toDelete:toDelete];
    [self.navigationController popViewControllerAnimated:YES];
}

 

Но кажется, что даже после отображения выбранного индекса в консоли он не изменяет / и не обновляет tableview.введите описание изображения здесь

Комментарии:

1. можете ли вы поставить точку останова в методе dismissViewWithIndex и посмотреть, какие части выполняются?

2. @ThilinaChaminHewagama я поставил точки останова для NSMutableDictionary * Перезагрузка EditCar, EditCar и Tableview он переходит в EditCar, а затем в перезагрузку tableview.

Ответ №1:

Вы просто изменяете значение локальной переменной. Это решит вашу проблему.

     NSMutableArray *cars = [[NSMutableArray alloc] initWithArray:self.cars];
    NSMutableDictionary *editCar =[NSMutableDictionary dictionaryWithDictionary:[self.cars objectAtIndex:index-1]];
    editCar[@"vehicleType"] = selectedVehicle == 0 ? @"SmallTruck" : @"BigTruck";
    [cars replaceObjectAtIndex:index-1 withObject:editCar];
    self.cars = cars;