2012-05-29 3 views
1

코어 데이터를 사용하여 일부 데이터를 검색하고 있습니다. 이 SQL 문과 같은 것을 어떻게 핵심 데이터로 변환 할 수 있습니까?코어 데이터 별 다중 그룹

SELECT bus, direction from BUSES where latitude > 58.00 and longitude < 34.00 group by bus, direction 

다른 말로하면, 나는 BUS와 DIRECTION에 의한 그룹화를 원하지만, 어디에서의 규정인가?

은이 코드를 사용하여 시도했다 :

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(lat > 58) AND (lat < 34)"]; 
[fetchRequest setPredicate:predicate]; 

:

request.propertiesToFetch = [NSArray arrayWithObjects:@"bus", @"direction", nil]; 
request.returnsDistinctResults = YES; 
request.resultType = NSDictionaryResultType; 

것은 나는 단지 버스와 방향을 검색 할 경우, 나는이 같은 위도와 경도를 가진 자 NSPredicate를 설정할 수 있다는 것입니다 나는 코어 데이터가 버스와 방향 만 검색하고있는 것 같아요. NSPredicate가 작동하지 않는 이유입니다.

답변

1

핵심 데이터가 SQL이 아닙니다. 사실 SQLite를 영구 저장소로 사용하지 않아도됩니다.

SQL에서 수행하는 방법에 대해 생각하지 않고 모델에서 정의한 엔티티 및 관계와 관련하여 해결하려는 문제에 대해 생각해 보는 것이 좋습니다.

프리디 케이트에서 일반 가져 오기 요청 (propertiesToFetch를 지정하지 않음)을 사용하여 원하는 개체를 가져온 다음 자신을 그룹화하는 것이 좋습니다.

하나의 속성에만 관심이있는 경우 전체 객체의 배열에 valueForKey:을 사용하면 해당 값의 배열을 빠르게 얻을 수 있습니다. 예를 들면 다음과 같습니다.

NSArray *busses = [objects valueForKey:@"bus"]; 
+0

및 두 값을 사용하여 가져 오려는 경우 ??? – Saad