Добавить дополнительную строку в UITableView, управляемый NSFetchedResultsController

Я использую UITableViewController для таблицы в своем приложении, и я добавил NSFetchedResultsController, чтобы предоставить данные для отображения в таблицу (установив self в качестве делегата).

Однако я хотел бы добавить уникальную ячейку в качестве последней ячейки таблицы, не связанной с элементами, созданными предикатом NSFetchedResultsController. Я хочу, чтобы эта ячейка всегда находилась внизу таблицы. Таблица.

Я пробовал просто добавить 1 к этим методам в источнике данных табличного представления:

- (NSUInteger)numberOfSectionsInTableView:(UITableView *)sender
{
    return [[self.fetchedResultsController sections] count] + 1;
}
- (NSUInteger)tableView:(UITableView *)sender numberOfRowsInSection:(NSUInteger)section
{
    return [[[self.fetchedResultsController sections] objectAtIndex:section] numberOfObjects] + 1;
}

А затем поймал случай, когда эта дополнительная строка генерируется вот так (в таблице есть только 1 раздел):

- (UITableViewCell *)tableView:(UITableView *)sender
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == [self.fetchedResultsController.fetchedObjects count]) {
        //Generate the last cell in  table.
    } else {
        //Generate the rest of the cells like normal.
    }
    return nil; //To keep the compiler happy.
}

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

Однако во время выполнения я все еще получаю следующую ошибку:

*** Terminating app due to uncaught exception 'NSRangeException', 
reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

Есть идеи, в чем причина? Или есть лучший способ добавить дополнительную строку в табличное представление, управляемое NSFetchedResultsController?

10
задан Jon Cox 7 March 2012 в 15:36
поделиться