2011-07-31 7 views
3

내 예측에 잘못된 점을 이해할 수 없습니다. 다음 데이터베이스 구성표가 있습니다.코어 데이터의 SUBQUERY

DataItem(color_ids) <->> (dataItem)Color 

여기서 color에는 colorID (int)가 포함되어 있습니다.

은 내가 다음 술어를 사용했다

all DataItems that contain colorID == 5. 

를 얻기 위해 노력 : 당신의 도움에 대한

SUBQUERY(color_ids, $sub, $sub.colorID==5)[email protected] > 0 

감사합니다.

+5

. 그러지 마. 핵심 데이터가 SQL이 아닙니다. 엔티티는 테이블이 아닙니다. 객체는 행이 아닙니다. 속성은 열이 아닙니다. 관계는 조인이 아닙니다. 핵심 데이터는 객체 그래프 관리 시스템으로 객체 그래프를 유지할 수도 있고 유지하지 않을 수도 있으며 그렇게하기 위해 SQL을 사용할 수도 있고 사용하지 않을 수도 있습니다. 코어 데이터를 SQL 용어로 생각하면 코어 데이터를 완전히 오해하여 많은 슬픔과 시간 낭비를 초래할 수 있습니다. – TechZen

답변

7

이 경우 SUBQUERY이 필요하지 않습니다. 실제로, 당신은 거의 결코 필요 SUBQUERY; 극히입니다. 사용하는 것이 올바른 상황을 찾기는 드뭅니다.

대신이 작업을 수행 할 수 있습니다 귀하의 명확 SQL과 같은 코어 데이터를 사용하려고

[NSPredicate predicateWithFormat:@"ANY color_ids.colorID == 5"]; 
+0

위대한 작품입니다. 어떻게하면 한 단계 더 깊이 갈 수 있습니까? <-->> B <-->> C가 있다고 가정 해보십시오. 우리는 여러 개의 A 엔티티가 있고 C 엔티티에는 label이라는 속성이 있습니다. 레이블이 == @ "1234"인 C 엔티티를 포함하는 모든 엔티티를 어떻게 찾을 수 있습니까? – zumzum

+3

@zumzum 아마도'SUBQUERY'가 필요할 것이고'SUBQUERY (aToBs, $ b, ANY $ b.bToCs.label = '1234'). @ count> 0'와 같은 것이 될 것입니다. –

+0

. 나는이 일을하고 내가 끝내 자마자 어떻게되는지 알려줄거야. SUBQUERIES는 iOS에서 작동합니까? – zumzum

관련 문제