OSDN Git Service

クラッシュした時にデータが保存されない問題を解消
authormasakih <masakih@users.sourceforge.jp>
Sat, 28 Nov 2015 15:54:13 +0000 (00:54 +0900)
committermasakih <masakih@users.sourceforge.jp>
Sat, 28 Nov 2015 15:54:13 +0000 (00:54 +0900)
#35500 close

KCD/HMCoreDataManager.m

index 1d10844..4ae3502 100644 (file)
@@ -55,11 +55,6 @@ typedef NS_ENUM(NSUInteger, HMCoreDataManagerType) {
 - (void)dealloc
 {
        [self saveAction:nil];
-       
-       NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
-       [nc removeObserver:[[self class] defaultManager]
-                                 name:NSManagedObjectContextDidSaveNotification
-                               object:self.managedObjectContext];
 }
 
 - (NSArray *)objectsWithEntityName:(NSString *)entityName sortDescriptors:(NSArray *)sortDescriptors predicate:(NSPredicate *)predicate error:(NSError **)error
@@ -235,6 +230,20 @@ typedef NS_ENUM(NSUInteger, HMCoreDataManagerType) {
                        });
                }
     }
+       
+       NSManagedObjectContext *mainContext = self.managedObjectContext.parentContext;
+       [mainContext performBlock:^{  // do nothing if mainContext is nil.
+               NSError *error = nil;
+               if(![mainContext save:&error]) {
+                       if([NSThread isMainThread]) {
+                               [[NSApplication sharedApplication] presentError:error];
+                       } else {
+                               dispatch_sync(dispatch_get_main_queue(), ^{
+                                       [[NSApplication sharedApplication] presentError:error];
+                               });
+                       }
+               }
+       }];
 }
 
 - (void)applicationWillTerminate:(NSNotification *)notification