1

这是关于我在此之前提出的 NSFetchedResultsChangeInsert 问题的下一个问题

以下代码是我在 NSFetchedResultsController 委托中使用的代码。更新和删除工作得很好,除非我尝试将新对象添加到我的模型中。

case NSFetchedResultsChangeInsert:
           [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
            [self configureCell:[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:indexPath.row inSection:1]] atIndexPath:[NSIndexPath indexPathForRow:indexPath.row inSection:1]];            
            break;

我的问题是:插入后如何更新表格视图?当我点击保存时,会创建新对象。但是该表不会相应地更新。我到处都试过了

[self.tableView reloadData];

我还尝试在 ViewWillAppear 和 ViewDidAppear 中调用 perfomFetch:

NSError *error = nil;
if (![_fetchedResultsController performFetch:&error]) {
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}

但是在我重新启动应用程序之前,表格不会更新。我花了 4 个小时寻找答案,但我被卡住了。任何帮助将不胜感激,谢谢

4

1 回答 1

2

There should be no need to call configureCell: for an insert event, [tableView insertRowsAtIndexPaths:...] is sufficient. The table data source method cellForRowAtIndexPath: will be called to get the new cell.

Also, indexPath == nil for insert events, therefore your configureCell: call cannot work.

The important point is to call [tableView beginUpdates] in controllerWillChangeContent: and [tableView endUpdates] in controllerDidChangeContent:.

于 2012-07-26T20:18:57.017 回答