我想在 NSFetchRequest 中省略谓词,以便删除实体的所有托管对象。
但是,当没有谓词时(根据 SQL 调试器),不会执行 fetch 请求。根据 Apple 的说法,谓词应该是可选的。
我需要如何更改代码以删除谓词?有任何想法吗?谢谢!
- (void)deleteEntity:(NSString*)entityName inContext:(NSManagedObjectContext *)context
{
NSFetchRequest * request= [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"TableStructure" inManagedObjectContext:context]];
//[entities setIncludesPropertyValues:NO]; //only fetch the managedObjectID
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"category = 'est'"];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *entitiesArray = [context executeFetchRequest:request error:&error];
if (error) {
NSLog(@"%@: Error fetching context: %@", [self class], [error localizedDescription]);
NSLog(@"entitiesArray: %@",entitiesArray);
return;
}
for(NSManagedObject *entity in entitiesArray) {
[context deleteObject:entity];
}
NSError *saveError = nil;
[context save:&saveError];
}
更新 2
似乎我在数据库准备好之前调用了我的 fetch 请求。如何确保在核心数据数据库准备好之前不调用我的请求?