Удалить строки в табличном представлении, связанные с основными данными - PullRequest
0 голосов
/ 30 сентября 2011

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

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source.
        NSManagedObject *selectedObject = [arrayList objectAtIndex:[indexPath row]];
        [managedObjectContext deleteObject:selectedObject];

        [arrayList removeObjectAtIndex:[indexPath row]];

        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }   
}

Однако япри нажатии кнопки «Удалить» появляется следующая ошибка:

*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-1448.89/UITableView.m:995 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (4) must be equal to the number of rows contained in that section before the update (4), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted).'

Мой источник данных - arrayList, содержащий NSManagedObjects, извлеченные из основных данных.

Идеи?Заранее спасибо!


Обновление:

Теперь удаление может работать после того, как я удаляю данные в arrayList, но данные в основных данных не удалялись, соответственно, при повторном запуске приложениясписок остается прежним.

1 Ответ

0 голосов
/ 30 сентября 2011

Это означает, что даже после того, как вы удалили строку, источник данных по-прежнему возвращает 4 как количество строк в разделе 0. Теперь в табличном представлении отображается только 3 строки для раздела, который должен иметь 4.

Из вашего описания вам, вероятно, потребуется удалить объект из arrayList в дополнение к удалению его из CoreData. Либо перезагрузите arrayList после удаления объекта из CoreData, а затем удалите строку.

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