Группировать и суммировать несколько записей с использованием Core Data - PullRequest
1 голос
/ 28 февраля 2011

Я ищу эффективный способ сделать это.У меня есть сущность с 2 атрибутами: isPrivate и points.isPrivate может иметь одно из двух значений: y или n.Очки, число в диапазоне от -200 до 200.

Мне нужно сгруппировать сумму очков следующим образом:

-200 to 0: 340pts
0 to 100: 231pts
100 to 200: 987pts.

В настоящее время я запускаю предикат, чтобы получитьзаписи, по одной на каждый диапазон, который мне нужен:

 ...
 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isPrivate = %y"];
 ...
 NSArray *ks = [[NSArray alloc] initWithArray:[context executeFetchRequest:fetchRequest error:&error]];
 NSNumber *t = [ks valueForKeyPath:@"@sum.points"];
 ...

, и это работает, но я ищу лучший способ сделать это.

Во-первых, так, как яделая это, я загружаю записи в память, затем в NSArray.Если бы я мог этого избежать, было бы идеально. Во-вторых, если бы я мог сделать это за один шаг, это могло бы быть лучше., не загружайте записи в память и получайте только сумму, а не все данные.

tks.

1 Ответ

2 голосов
/ 28 февраля 2011

Я думаю, что вы хотите извлекать конкретные значения, используя выражение NSExpression.

Это позволяет получить только значения, связанные с определенным атрибутом.Затем, используя операторы сбора, вы можете быстро найти сумму, количество, минимум, максимум и т. Д.

...