Я полагаю, вы работаете с tableView
.Видимо, вы модифицируете источник данных вашего tableView.Когда вы удаляете объект из источника данных, вы также должны настроить свой tableView.Это означает либо вызов reloadData
, либо вызов [tableView deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation]
.
Причина, по которой ваше приложение не падает, если вы введете -1, может быть - возможно, - потому что есть только элемент, который соответствует [currentValue intValue] < [finishValue intValue]
условие, так что если вы пройдете через [projectsTable numberOfRowsInSection:0]-1
, после удаления этого объекта, numberOfRowsInSection
соответствует количеству projectsTable.
Но это хорошо только для одного цикла.Когда происходит следующий цикл, в if...loop
ваше приложение снова падает, если только вы не включите [projectsTable reloadData]
в тот же if...loop
.
Хотя метод reloadData
работает просто отлично, но если выпросто удаляете строку или добавляете строку в таблицу, добавляя или удаляя объекты, лучше использовать методы deleteRowsAtIndexPaths
или insertRowsAtIndexPaths
.Это снизит нагрузку и работу вашего приложения и сделает его более плавным и быстрым.
Суть в том, чтобы ваш код работал, сразу после [(NSMutableArray *)[projects objectForKey:@"activeProjects"] removeObjectAtIndex:i];
удалите соответствующий объект из вашего tableView, вызвав deleteRowsAtIndexPaths
.
Кроме того, вы также можете использовать beginUpdates
и endUpdates
.Для полной справки обратитесь к http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html
Надеюсь, это поможет.