我有一个从 Web 服务接收定期更新的核心数据实体。当这个核心数据实体改变它的内容时,我希望在我的一个视图控制器类上调用一个委托方法。这样我就能够更新该视图控制器上的适当数据。我将如何去做这件事。
这类似于 NSFetchedResultsController 在核心数据内容更改时向表视图发送委托消息,但我不希望在这种情况下使用 NSFetchedResults 控制器。
谢谢
我有一个从 Web 服务接收定期更新的核心数据实体。当这个核心数据实体改变它的内容时,我希望在我的一个视图控制器类上调用一个委托方法。这样我就能够更新该视图控制器上的适当数据。我将如何去做这件事。
这类似于 NSFetchedResultsController 在核心数据内容更改时向表视图发送委托消息,但我不希望在这种情况下使用 NSFetchedResults 控制器。
谢谢
如果我是你,我实际上会做一些委托以外的事情:我会使用通知。
您可以观察“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.
}