Определение метода категории для контекста NSManagedObject, который оборачивает общий запрос в однострочник.
@interface NSManagedObjectContext(MyQueryAdditions)
-(NSArray *)queryEntityForName:(NSString *)name predicateFormat:(NSString *)pstring argumentArray:(NSArray *)arr;
@end
@implementation NSManagedObjectContext(MyQueryAdditions)
-(NSArray *)queryEntityForName:(NSString *)name predicateFormat:(NSString *)pstring argumentArray:(NSArray *)arr
{
NSEntityDescription *entity = [NSEntityDescription entityForName:name inManagedObjectContext:self];
NSFetchRequest *fetch = [[[NSFetchRequest alloc] init] autorelease];
[fetch setEntity:entity];
NSPredicate *pred;
if(pstring)
{
if(arr) pred = [NSPredicate predicateWithFormat:pstring argumentArray:arr];
else pred = [NSPredicate predicateWithFormat:pstring];
[fetch setPredicate:pred];
}
NSError *error = nil;
[self retain];
[self lock];
NSArray *results = [self executeFetchRequest:fetch error:&error];
if (error) {
NSLog(@"MOC Fetch - Unresolved error %@, %@", error, [error userInfo]);
results = [NSArray array];
}
[self unlock];
[self release];
return results;
}
@end
Означает, что базовый запрос ко всем элементам может быть простым, например
NSArray *cres = [managedObjectContext queryEntityForName:@"Person" predicateFormat:nil argumentArray:nil];