Очистить NSMutableArray для обновления - PullRequest
10 голосов
/ 19 октября 2011

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

РЕДАКТИРОВАТЬ: Весьма вероятно, что проблема заключается в следующем: я использую pull для обновления внешней библиотеки, а также когда вы прокручиваете вверх и отпускаететаблица, она отскакивает вниз, и, таким образом, UITableView пытается загрузить следующую ячейку, которую он не может, потому что массив очищен, и он все еще загружается.

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

Ответы [ 3 ]

42 голосов
/ 19 октября 2011
Проблема

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

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

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

3 голосов
/ 19 октября 2011

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

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];
0 голосов
/ 19 октября 2011

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

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