如何从ManagedObjectContext中删除给定实体的所有对象

时间:2010-04-30 20:14:03

标签: iphone cocoa cocoa-touch core-data

我不想对我的ManagedObjectContext使用reset方法。我只需要删除特定实体的所有对象,但我没有看到任何执行此操作的方法。选择特定实体的所有对象并循环遍历每个对象并删除它们都有效,但速度非常慢。

2 个答案:

答案 0 :(得分:7)

选择特定实体的所有对象并循环遍历每个对象并删除它们

这就是你如何做到的。

答案 1 :(得分:0)

救援类别!试。

的NSManagedObjectContext + MyExtensions.h

@interface NSManagedObjectContext (MyExtensions)

-(void) deleteAllInstancesOfEntity:(NSString*) entity;

@end

的NSManagedObjectContext + MyExtensions.m

#import "NSManagedObjectContext+MyExtensions.h"


@implementation NSManagedObjectContext (MyExtensions)

-(void) deleteAllInstancesOfEntity:(NSString*) entity {
     NSError* error;

     for (NSManagedObject* o in
            [self executeFetchRequest:[NSFetchRequest fetchRequestWithEntityName:entity]
                                error:&error]) {
          [o.managedObjectContext deleteObject:o];
     }
}

@end

用法

NSManagedObjectContext *myMOC = ...;
[myMOC deleteAllInstancesOfEntity:@"SmellyCheese"];

分类太棒了。