2011-02-28 2 views
1

효율적인 방법을 찾고 있습니다. 나는 isPrivate와 point라는 2 개의 속성을 가진 엔티티를 가지고있다. 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에서 메모리에 레코드를로드합니다. 내가 그것을 피할 수 있다면 완벽 할 것입니다. 둘째로, 제가 한 걸음 더 나아갈 수 있다면 더 좋을 것입니다.

완벽한 솔루션은 단일 조건 자로 레코드를 그룹화 및 합계하고 레코드를 메모리에로드하지 않고 모든 dat이 아닌 합계 만 얻는 것입니다.

tks.

+1

CoreData는 데이터베이스로 생각하고 있습니다. 이것은 귀하의 질문에 근본적인 결함입니다. CoreData는 ** 데이터베이스가 아닙니다 **. 이것은 객체 그래프 관리 시스템입니다. 그것은 밑에 SQLite 데이터베이스를 사용할 수도 있지만 구현 세부 사항입니다. CoreData는 훨씬 높은 추상화 수준에서 작동합니다. –

+0

도움이 될 수도 있습니다. https://stackoverflow.com/q/12637611/1224741 – QED

답변

2

나는이 특정 속성과 연관된 단지 값을 검색 할 수 있습니다 당신이 fetch specific values using an NSExpression.

하려는 생각합니다. 그런 다음 컬렉션 연산자를 사용하여 합계, 수, 최소, 최대 등을 빠르게 찾을 수 있습니다.

관련 문제