我不想对我的ManagedObjectContext使用reset方法。我只需要删除特定实体的所有对象,但我没有看到任何执行此操作的方法。选择特定实体的所有对象并循环遍历每个对象并删除它们都有效,但速度非常慢。
答案 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"];
分类太棒了。