我怎样才能让tableViewController知道在外面改变了managedObjectContext?

时间:2015-07-08 14:21:24

标签: ios objective-c uitableview core-data

在我正在开发的应用程序中,我有2个 tableViewControllers ,其中表格使用Core Data和2 ViewControllers 填充数据,我可以在其中阅读,添加,删除并更新该信息。除了 tableViewControllers 没有得到更新这一事实外,一切都很棒。我正在考虑使用委托以某种方式使那些 tableViews 知道 didChangeObject 发生在另一个 ViewController 中,但我真的不知道该怎么做而且我不确定这是否正确。

2 个答案:

答案 0 :(得分:4)

这正是NSFetchedResultsController的设计目标。您使用NSFetchedResultsController来驱动表视图的数据,并使表视图控制器成为NSFetchedResultsController的委托,以接收有关数据更改时间的更新。

答案 1 :(得分:3)

我建议您使用NSFetchedResultsController作为 Marcus 帖子。使用tableview很方便。

如果您不想使用它,可以使用通知

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(managedObjectDidChange:) name:NSManagedObjectContextDidSaveNotification object:nil];

然后合并更改

-(void)managedObjectDidChange:(NSNotification *)nofication{
[self.context performBlock:^{
    [self.context mergeChangesFromContextDidSaveNotification:nofication];
}];
}