Как считать в coredata (агрегация)?

Я изучаю основные данные и особенно работаю над агрегацией.

Текущий, что я хочу сделать:подсчитать количество записей из таблицы, которая по некоторым критериям имеет отношение ко многим с обратным отношением.

В настоящее время я делаю это:

NSExpression *ex = [NSExpression expressionForFunction:@"count:" 
                                                 arguments:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:@"ddname"]]];
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"ddtype == 'Home'"];
    NSExpressionDescription *ed = [[NSExpressionDescription alloc] init];
    [ed setName:@"countDDEvents"];
    [ed setExpression:ex];
    [ed setExpressionResultType:NSInteger16AttributeType];
    NSArray *properties = [NSArray arrayWithObject:ed];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setPredicate:pred];
    [request setPropertiesToFetch:properties];
    [request setResultType:NSDictionaryResultType];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"DDEvent" inManagedObjectContext:[self.currentAccount managedObjectContext]];
    [request setEntity:entity];
    NSArray *results = [[self.currentAccount managedObjectContext] executeFetchRequest:request error:nil]; 
    NSDictionary *dict = [results objectAtIndex:0];
    NSLog(@"Average birthdate for female heroes: %@", [dict objectForKey:@"countDDEvents"]);

Это изДжефф Лемарш.

РЕДАКТИРОВАТЬ : и я нашел свое решение как

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"ddtype == 'Home'"];
    [request setPredicate:pred];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"DDEvent" inManagedObjectContext:[self.currentAccount managedObjectContext]];
    [request setEntity:entity];

    NSError *error = nil;
    NSUInteger count = [[self.currentAccount managedObjectContext] countForFetchRequest:request error:&error];

Это работает хорошо. Но я хочу сделать больше запросов такого типа за один раз. Поэтому я думаю, что это не может быть предпочтительным способом подсчета.

РЕДАКТИРОВАТЬ :

Так что я думаю, что подход будет подходящим ????

Так может кто-нибудь сказать мне более эффективный способ сделать это.

Благодарю .

Ответы на вопрос(2)

Ваш ответ на вопрос