How to delete an NSManagedObject in Core Data

You can delete individual objects by using the NSManagedObjectContext method deleteObject, like so:

[self.managedObjectContext deleteObject:yourManagedObject];

To delete all managed objects from your store, you can use a for-in loop:

- (void)clearCoreData {
    
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"YourEntity" inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:entity];
    
    NSError *error = nil;
    NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
    if (fetchedObjects == nil) {
        NSLog(@"Could not delete Entity Objects");
    }
    
    for (YourEntity *currentObject in fetchedObjects) {
        [self.managedObjectContext deleteObject:currentEntity];
    }
    
    [self saveContext];

}

I assume that you have created managed object sub classes. I’m also assuming that you have access to save the context. If not, here’s what the method looks like (taken from AppDelegate with Core Data template):

- (void)saveContext
{
    NSError *error = nil;
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
    if (managedObjectContext != nil) {
        if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {

            NSLog(@"Saving didn't work so well.. Error: %@, %@", error, [error userInfo]);
            abort();
        }
    }
}




Jay is the CEO and founder of WP Hosting, a boutique style managed WordPress hosting and support service. He has been working with Plesk since version 9 and is a qualified Parallels Automation Professional. In his spare time he likes to develop iOS apps and WordPress plugins, or draw on tablet devices. He blogs about his coding journey at http://wpguru.co.uk and http://pinkstone.co.uk.