在NSFetchedResultsChangeInsert之后重新加载表

时间:2012-07-26 18:12:58

标签: ios core-data nsfetchedresultscontroller nsfetchrequest

这是关于NSFetchedResultsChangeInsert asked before here的问题的下一个问题

以下代码是我在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;

我的问题是:如何在插入后更新tableview?当我点击保存时,会创建新对象。但是表格没有相应更新。

我到处尝试过
[self.tableView reloadData];

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

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

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

1 个答案:

答案 0 :(得分:2)

对于插入事件,不需要调用configureCell:[tableView insertRowsAtIndexPaths:...]就足够了。将调用表数据源方法cellForRowAtIndexPath:以获取新单元格。

此外,对于插入事件,indexPath == nil,因此您的configureCell:电话无效。

重点是拨打[tableView beginUpdates]中的controllerWillChangeContent:[tableView endUpdates]中的controllerDidChangeContent: