正如標題IM與被塗抹在不同的後臺線程對象(XML解析)多線程核心數據 - NSManagedObject無效
在我的後臺線程我做這個
managedContext = [[NSManagedObjectContext alloc] init];
[managedContext setUndoManager:nil];
[managedContext setPersistentStoreCoordinator: [[DataManager sharedManager] persistentStoreCoordinator]];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:managedContext];
NSMutableArray *returnSource = [[self parseDocument:doc] retain];
[managedContext save:&error];
if (error) {
NSLog(@"saving error in datafeed");
}
[managedContext reset];
[self performSelectorOnMainThread:@selector(parseCompleteWithSource:) withObject:returnSource waitUntilDone:YES];
核心數據應用工作
的合併方法是這樣的:
NSManagedObjectContext *mainContext = [[DataManager sharedManager] managedObjectContext];
// Merge changes into the main context on the main thread
[mainContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
withObject:notification
waitUntilDone:YES];
[[NSNotificationCenter defaultCenter] removeObserver:self];
我認爲合併是成功的,但因爲我想在一個的UITableView顯示它總是告訴我牛逼帽子我的對象是無效這是可以預料的,因爲
[managedContext reset];
如果我想要做的就是證明這是目前在數據庫中的項目,在後臺解析XML和多數民衆贊成在完成我想要更新帶有新/更新對象的UITableView。我該怎麼做,我可以「更新」對象到其他上下文莫名其妙或合併不正確?
我是否需要在主ObjectContext中定義特定的內容? 我試過不同mergepolicies沒有任何運氣。
希望你能幫助我,謝謝!
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/Concurrency.html –