Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to remove all objects from Core Data

how can I remove all objects? I know I can remove one by

[managedObjectContext deleteObject:objToDelete];

is it possible to delete all without iterating all array? thanks

like image 881
Burjua Avatar asked Jul 16 '10 14:07

Burjua


1 Answers

This function removes the current SQLite db file from disk and creates a new one. It's much faster than any iterative delete.

-(void)deleteAndRecreateStore{
        NSPersistentStore * store = [[self.persistentStoreCoordinator persistentStores] lastObject];  
        NSError * error;    
        [self.persistentStoreCoordinator removePersistentStore:store error:&error];
        [[NSFileManager defaultManager] removeItemAtURL:[store URL] error:&error];
        __managedObjectContext = nil;
        __persistentStoreCoordinator = nil;
        [self managedObjectContext];//Rebuild The CoreData Stack  
}

If you want to call this outside Application Delegate (assuming boilerplate CoreData integration) you can use this to get a reference to your app delegate:

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];

Don't forget to import the header.

like image 164
Luke Mcneice Avatar answered Oct 25 '22 03:10

Luke Mcneice