我有一堆NSOperations与他们自己的NSManagedObjectContexts更改我的核心数据存储和保存并成功地将其更改到主线程的NSManagedObjectContext。我知道的很多。现在我想要在主要上下文更新时通知前端UIViewController。所以我...是否NSManagedObjectContext的mergeChangesFromContextDidSaveNotification:post NSManagedObjectContextDidSaveNotification?
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(refreshData:)
name:NSManagedObjectContextDidSaveNotification
object:[NSManagedObject mainThreadManagedObjectContext]];
}
但是我不合并来自后台线程改变主线程的的NSManagedObjectContext被张贴了自己的任何通知后的想法。我试图在苹果公司的文档中找到某处,告诉主线程合并更改或其他一些内容后,我应该发布自己的文档,但没有运气。对于我的NSOperation我有...额外的参考
+ (void)mergeChanges:(NSNotification *)notification
{
NSManagedObjectContext *managedObjectContext = [self mainThreadManagedObjectContext];
[managedObjectContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
withObject:notification
waitUntilDone:YES];
}
+ (NSManagedObjectContext *)adHocManagedObjectContext
{
NSManagedObjectContext *adHocManagedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] adHocManagedObjectContext];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:adHocManagedObjectContext];
return adHocManagedObjectContext;
}
我应该期待从主线程的NSManagedObjectContext听到它保存,或者我应该mergeChangesFromContextDidSaveNotification后后我自己的通知:?
感谢rob,我也试过,并收到了一次通知我的上下文改变了500次。你知道会导致什么吗? (我在mergeChangesFromContextDidSaveNotification:时调用了一个断点,并且每次都看到它被调用)很奇怪。 – rob5408 2013-04-25 05:14:49
其实它看起来像我没有任何引用任何对象(只有故障),我认为这就是为什么我没有收到通知。作为测试,我从商店选择一个对象来保持并每次都收到通知。需要弄清楚设置这个最合理的方法,但是这对我有帮助,谢谢! – rob5408 2013-04-25 05:28:07