Как рассчитать в 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"]);

От jeff lemarche.

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

    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];

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

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

Таким образом, я думаю, что подход был бы соответствующим????

Так может любой говорить мне более эффективный предпочтительный способ сделать это.

Спасибо.

6
задан harshalb 27 July 2010 в 12:38
поделиться