Дополнительно (к ответу Джо) вы также можете ускорить время сохранения, выполнив сохранение в другом потоке (NSPrivateQueueConcurrencyType):
- (void)openDataBase {
// Set up _persistentStoreCoordinator accordingly.
privateWriterContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[privateWriterContext setPersistentStoreCoordinator:_persistentStoreCoordinator];
context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
context.parentContext = _privateWriterContext;
}
- (void)save
{
[context performBlock:^{
NSError *error;
if (![context save:&error]) { // This will forward save to the parent, which is privateWriterContext.
NSLog(@"Error saving main DB: %@, %@", error, [error userInfo]);
NSAssert(false, nil);
}
[privateWriterContext performBlock:^{
NSError *error;
if (![privateWriterContext save:&error]) {
NSLog(@"Error saving writer DB: %@, %@", error, [error userInfo]);
NSAssert(false, nil);
}
}];
}];
}