2014-03-25 213 views
-1

我试图删除核心数据实体中的所有对象。
我试着用下面的代码,但不断收到此错误:删除核心数据中的对象

'An NSManagedObjectContext cannot delete objects in other contexts.' 

下面是代码:

- (NSManagedObjectContext *)managedObjectContext { 
    NSManagedObjectContext *context = nil; 
    id delegate = [[UIApplication sharedApplication] delegate]; 
    if ([delegate performSelector:@selector(managedObjectContext)]) { 
     context = [delegate managedObjectContext]; 
    } 
    return context; 
} 


- (void) deleteObjects { 

    NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Fixture"]; 

    NSError *error; 
    NSArray *array = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
    if (array == nil) { 
     NSLog(@"Error"); 
    } else { 
     NSManagedObject *funFixture = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy]; 
     [managedObjectContext deleteObject:funFixture]; 
    } 


} 
+0

你[看这三个问题(http://stackoverflow.com/search?q=%22cannot+delete+objects+in+other+contexts%22)? – dasblinkenlight

回答

1

你的问题就在这里:

NSManagedObject *funFixture = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy]; 

您已经已经执行了fetchRequest,并且你有array中的对象。您需要删除这些对象,而不是重新运行execute。事情是这样的:

for (NSManagedObject* object in array) { 
    [managedObjectContext deleteObject:object]; 
} 
相关问题