diff --git a/Limelight/AppDelegate.m b/Limelight/AppDelegate.m index 9744fb1..e2078da 100644 --- a/Limelight/AppDelegate.m +++ b/Limelight/AppDelegate.m @@ -91,12 +91,14 @@ static NSOperationQueue* mainQueue; - (void)saveContext { - NSError *error = nil; - NSManagedObjectContext *managedObjectContext = self.managedObjectContext; + NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; if (managedObjectContext != nil) { - if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { - Log(LOG_E, @"Critical database error: %@, %@", error, [error userInfo]); - } + [managedObjectContext performBlock:^{ + NSError *error = nil; + if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { + Log(LOG_E, @"Critical database error: %@, %@", error, [error userInfo]); + } + }]; } } diff --git a/Limelight/Database/DataManager.m b/Limelight/Database/DataManager.m index 5b28be6..3bc742b 100644 --- a/Limelight/Database/DataManager.m +++ b/Limelight/Database/DataManager.m @@ -31,7 +31,7 @@ } _managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; - [_managedObjectContext setPersistentStoreCoordinator:_appDelegate.persistentStoreCoordinator]; + [_managedObjectContext setParentContext:[_appDelegate managedObjectContext]]; return self; } @@ -175,7 +175,7 @@ - (void) saveData { NSError* error; - if (![_managedObjectContext save:&error]) { + if ([_managedObjectContext hasChanges] && ![_managedObjectContext save:&error]) { Log(LOG_E, @"Unable to save hosts to database: %@", error); }