Очистить NSMutableArray для обновления

У меня есть пара NSMutableArrays, которую нужно очистить при обновлении представления. Однако, когда я пытаюсь очистить их с помощью [array removeAllObjects];, мой столбец падает из-за index beyond bounds error. Все, что я делаю с обновлением, очищает массивы и вызывает ту же функцию, что и в viewDidLoad для заполнения таблицы. [tableView reloadData] не вызывается до самой последней строки метода.

EDIT: Очень вероятно, что проблема такова: я использую pull для обновления внешней библиотеки, а когда вы просматриваете и отпускаете таблицу, она отскакивает назад, и, таким образом, UITableView пытается загрузить следующую ячейку, потому что массив очищается, и он все еще загружается.

Ответ: removeAllObjects из массивов, немедленно сделайте self.tableView reloadData, а затем продолжите с остальными.

Ответ 1

проблема может быть вызвана тем, что numberOfRowsInSection возвращает некоторый счет, а ваш массив источников данных пуст.

просто вызовите [array removeAllObjects] и в numberOfRowsInSection return [array count].

Я надеюсь, что это решит вашу проблему. Лучшее из удачи!!!

Ответ 2

Я удаляю ячейки из представления таблицы в следующем виде -

NSMutableArray* indexPathsToDelete = [[NSMutableArray alloc] init];
            for(unsigned int i = 0; i < [self.array count]; i++)
            {
                [indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:0]];
            }

[self.tableView beginUpdates];
[self.array removeAllObjects];
[self.tableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationLeft];
[self.tableView endUpdates];
[indexPathsToDelete release];

Ответ 3

Когда вы обновляете свой массив, сначала проверьте, есть ли у него объект или нет, а затем повторно инициализируйте свой массив и отпустите его.

Ответ 4

То, что я сделал, было

[array removeAllObjects];

затем позвоните

[self.tableview reloadData];