エンティティのすべての管理対象オブジェクトを削除するために、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
データベースの準備が整う前に、フェッチ要求を呼び出しているようです。コア データ データベースの準備が整う前にリクエストが呼び出されないようにするにはどうすればよいですか?