Каков наиболее эффективный способ удаления большого количества (более 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, но там использовалось еще больше памяти.

Что может быть более эффективным для памяти способом сделать это?

Ответы на вопрос(6)

Ваш ответ на вопрос