在使用核心数据删除带删除按钮的DetailView控制器中的项目后,我需要使用UITableView更新MainView控制器中的表视图。
核心数据结构:http://i.stack.imgur.com/GZ0k8.png
在MainView控制器中我有一个带有订单的表,按下订单将打开一个带有食物和订单的详细视图控制器,我可以删除订单。之后我需要[self popViewControllerAnimated:YES]
;
删除对象的代码,其中self.orderItem - 传递给DetailView控制器的命令:
[self.managedObjectContext deleteObject:self.orderItem];
NSError *error = nil;
if (![self.managedObjectContext save:&error]) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
答案 0 :(得分:2)
执行此操作的最佳方法是使用NSFetchedResultsController。它将对正在获取的数据进行更改,您可以更新表。这是一个很好的教程。 http://www.raywenderlich.com/999/core-data-tutorial-how-to-use-nsfetchedresultscontroller
答案 1 :(得分:1)
在mainviewController的viewWillAppear中编写代码 用于重新加载表视图
//this controller delegate method
- (void)viewWillAppear:(BOOL)animated
{
[tableview reloadData];
}
当你弹出主视图时,它会接到电话
答案 2 :(得分:0)
您应重新创建nsfetchrequest
并从viewWillAppear
中的核心数据中获取数据,并在datasource
更新后调用[table reloadData]
。