Проблема с удалением из CoreData - PullRequest
0 голосов
/ 03 августа 2011

Я использую этот код для удаления записи из CoreData:

        NSManagedObjectContext *context2=[self managedObjectContext];
        NSFetchRequest *fetch2 = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity2=[NSEntityDescription entityForName:@"RecentMovies" inManagedObjectContext:context2];
        [fetch2 setEntity:entity2];
        [fetch2 setResultType:NSDictionaryResultType];
        NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"DateTime"];
        NSExpression *minDateExpression = [NSExpression expressionForFunction:@"min:"
                                                    arguments:[NSArray arrayWithObject:keyPathExpression]];
        NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
        [expressionDescription setName:@"minDateTime"];
        [expressionDescription setExpression:minDateExpression];
        [expressionDescription setExpressionResultType:NSDateAttributeType];    
        [fetch2 setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];

        error=nil;
        NSArray *objects2 = [context2 executeFetchRequest:fetch2 error:&error];
        if (objects2 == nil) {
            // Handle the error.
            NSLog(@"ERRORS IN SEARCH INSIDE VIEW SUCCESS");
        }
        else {
            if ([objects2 count] > 0) {
                NSLog(@"Minimum date: %@", [[objects2 objectAtIndex:0] valueForKey:@"minDateTime"]);

                //delete the oldest entry !
                for (NSManagedObject *object2 in objects2) {
                    [context2 deleteObject:object2];
                }

            }
        }

Однако я получаю следующую ошибку:

Minimum date: 2011-08-03 08:32:35 +0000
2011-08-03 03:33:15.014 EncameoApp[1933:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'An NSManagedObjectContext cannot delete objects in other contexts.'

Любая помощь?

У меня также есть две другие таблицы в CoreData, и [self managedObjectContext] является общим для всего кода CoreData.Я немного запутался здесь из-за сообщения об ошибке в контексте ...

1 Ответ

0 голосов
/ 03 августа 2011

Обычно плохая идея изменить массив, который вы перебираете.

                for (NSManagedObject *object2 in objects2) {
                [context2 deleteObject:object2];
            }
...