在子视图中删除核心数据后更新表视图

时间:2013-05-16 09:17:14

标签: objective-c uitableview core-data uiviewcontroller

在使用核心数据删除带删除按钮的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();
        }

3 个答案:

答案 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]