Каков наиболее эффективный способ удаления большого количества (более 10.000) объектов в Базовых данных?
Способ, которым я пытаюсь удалить несколько наборов из 10.000+ NSManagedObjects, требует слишком много памяти (около 20 МБ живых байтов), и мое приложение отбрасывается. Вот реализация метода удаления:
<code>+ (void)deleteRelatedEntitiesInManagedObjectContext:(NSManagedObjectContext *)context { NSFetchRequest *fetch = [[NSFetchRequest alloc] init]; [context setUndoManager:nil]; [fetch setEntity:[NSEntityDescription entityForName:NSStringFromClass(self) inManagedObjectContext:context]]; [fetch setIncludesPropertyValues:NO]; NSError *error = nil; NSArray *entities = [context executeFetchRequest:fetch error:&error]; NSInteger deletedCount = 0; for (NSManagedObject *item in entities) { [context deleteObject:item]; deletedCount++; if (deletedCount == 500) { [context save:&error]; deletedCount = 0; } } if (deletedCount != 0) { [context save:&error]; } } </code>
Я пытался: -setFetchBatchSize, но там использовалось еще больше памяти.
Что может быть более эффективным для памяти способом сделать это?