Delete/Reset all entries in Core Data?

后端 未结 30 3314
天命终不由人
天命终不由人 2020-11-22 16:00

Do you know of any way to delete all of the entries stored in Core Data? My schema should stay the same; I just want to reset it to blank.


Edit

30条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-22 16:24

    Here is combined solution for purging Core Data.

    - (void)deleteAllObjectsInCoreData
    {
        NSArray *allEntities = self.managedObjectModel.entities;
        for (NSEntityDescription *entityDescription in allEntities)
        {
            NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
            [fetchRequest setEntity:entityDescription];
    
            fetchRequest.includesPropertyValues = NO;
            fetchRequest.includesSubentities = NO;
    
            NSError *error;
            NSArray *items = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
    
            if (error) {
                    NSLog(@"Error requesting items from Core Data: %@", [error localizedDescription]);
                }
    
            for (NSManagedObject *managedObject in items) {
                [self.managedObjectContext deleteObject:managedObject];
            }
    
            if (![self.managedObjectContext save:&error]) {
                NSLog(@"Error deleting %@ - error:%@", entityDescription, [error localizedDescription]);
            }
        }  
    }
    

提交回复
热议问题