使用Delegate - Core Data监听更改

时间:2012-07-22 01:53:23

标签: objective-c ios core-data delegates nsfetchedresultscontroller

我有一个核心数据实体,可以从Web服务接收定期更新。当此核心数据实体更改其内容时,我希望在我的一个View Controller类上调用委托方法。这样我就可以更新该视图控制器上的相应数据。我该怎么做呢。

这类似于NSFetchedResultsController,它在更改Core Data内容时向表视图发送委托消息,但在这种情况下我不想使用NSFetchedResults Controller。

由于

1 个答案:

答案 0 :(得分:5)

如果我是你,我实际上会做除委托以外的事情:我会使用通知。

您可以观察“NSManagedObjectContextDidSaveNotification”,当它从Web服务保存更改时,您可以在视图控制器中对活动进行排队。

因此,假设您想在创建视图控制器时启动此遵守,并在视图控制器完成时完成:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

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

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

然后您需要做的就是观察变化:

- (void)managedObjectContextDidSave:(NSNotification *)notification {
    // Update your stuff here.
}