我有一堆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