From f56eeda3dde019fbf72e7d89f42283c76265f197 Mon Sep 17 00:00:00 2001 From: masakih Date: Sun, 11 May 2014 09:38:51 +0900 Subject: [PATCH] =?utf8?q?=E3=83=A1=E3=82=A4=E3=83=B3=E3=82=B9=E3=83=AC?= =?utf8?q?=E3=83=83=E3=83=88=E3=82=99=E5=A4=96=E3=81=A6=E3=82=99=E3=83=86?= =?utf8?q?=E3=82=99=E3=83=BC=E3=82=BF=E3=81=8B=E3=82=99=E6=9B=B4=E6=96=B0?= =?utf8?q?=E3=81=95=E3=82=8C=E3=81=9F=E3=82=89=E3=83=AD=E3=82=AF=E3=82=99?= =?utf8?q?=E3=82=92=E5=90=90=E3=81=8F=E3=82=88=E3=81=86=E3=81=AB=E3=81=97?= =?utf8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KCD/HMCoreDataManager.m | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/KCD/HMCoreDataManager.m b/KCD/HMCoreDataManager.m index d5450258..2fd781a8 100644 --- a/KCD/HMCoreDataManager.m +++ b/KCD/HMCoreDataManager.m @@ -30,6 +30,11 @@ name:NSApplicationWillTerminateNotification object:NSApp]; + [nc addObserver:self + selector:@selector(managedContextObjectDidChange:) + name:NSManagedObjectContextObjectsDidChangeNotification + object:[defaultManager managedObjectContext]]; + objc_setAssociatedObject(self, "defaultManager", defaultManager, OBJC_ASSOCIATION_RETAIN); return defaultManager; } @@ -222,17 +227,22 @@ NSPersistentStoreCoordinator *psc = [moc persistentStoreCoordinator]; if(![psc isEqual:[self persistentStoreCoordinator]]) return; -// if([NSThread isMainThread]) { -// [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification]; -// } else { -// dispatch_sync(dispatch_get_main_queue(), ^{ -// [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification]; -// }); -// } + if([NSThread isMainThread]) { + [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification]; + } else { + dispatch_sync(dispatch_get_main_queue(), ^{ + [self.managedObjectContext commitEditing]; + [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification]; + [self.managedObjectContext commitEditing]; + }); + } +} + ++ (void)managedContextObjectDidChange:(NSNotification *)notification +{ + if([NSThread isMainThread]) return; - [self.managedObjectContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:) - withObject:notification - waitUntilDone:YES]; + NSLog(@"Read only managed context object did change in NOT main thread. -> \n %@", [notification userInfo]); } #pragma mark - abstruct -- 2.11.0