这是关于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个小时寻找答案,但我已经卡住了。任何帮助将不胜感激,谢谢
答案 0 :(得分:2)
对于插入事件,不需要调用configureCell:
,[tableView insertRowsAtIndexPaths:...]
就足够了。将调用表数据源方法cellForRowAtIndexPath:
以获取新单元格。
此外,对于插入事件,indexPath == nil
,因此您的configureCell:
电话无效。
重点是拨打[tableView beginUpdates]
中的controllerWillChangeContent:
和[tableView endUpdates]
中的controllerDidChangeContent:
。