2011-03-12 2 views
0

내 iPhone 어플리케이션에서 Core Data를 사용하고 있습니다.코어 데이터에서 다 대다 관계에 액세스하기

나는 다 대 다 관계로 연결된 2 개의 엔티티 :리스트와 아이템을 가지고있다. 목록의 관계 이름은 항목이고 항목은 목록입니다.

사용자가 선택한 목록에서 모든 항목을 가져오고 싶습니다.

지금 나는 그 같이 술어 구축을 위해 노력하고있다 :

NSPredicate *basePredicate = [NSPredicate predicateWithFormat:@"lists IN %@", listsIds]; 

listsIds 것은하며 Object

의 배열입니다하지만이 프로그램을 실행할 때이 오류가 얻을 :

을 술어에 대한 구현되지 않은 SQL 생성 : (목록 IN {0x594ac10}) '

어떻게해야할까요?

감사합니다.

답변

0

이 시도 : 확실하지

NSPredicate *basePredicate = [NSPredicate predicateWithFormat: 
          @"ALL list.objectID IN %@", listsIds]; 

을 그렇게 당신은 또한 시도 할 수 ALL 필요한 경우 :

NSPredicate *basePredicate = [NSPredicate predicateWithFormat: 
          @"list.objectID IN %@", listsIds]; 
+0

의견을 보내 주셔서 감사합니다. 상황을 전진 시켰지만 이제이 술어에 대해 다음과 같은 오류가 발생합니다. 'NSInvalidArgumentException'이라는 캐치되지 않은 예외로 인해 응용 프로그램을 종료합니다. 이유 : '지원되지 않는 조건 자 (null)' 아이디어가 있습니까? –

+0

그래, 조금 쿼리를 변경했습니다 : NSPredicate * basePredicate = [NSPredicate predicateWithFormat : @ "ANY 목록 IN % @", listsIds]; 지금은 잘 작동하는 것 같습니다! –

+0

다행 니가있어 :) – David

1

당신은 심지어 술어가 필요하십니까?

사용자가 List 개체를 선택한 다음 관련 Item 개체를 찾으려면 List.items 관계를 걸어보십시오.

List 사용자가 선택한 객체가 있다고 가정합니다. 관련 Item 객체의 배열을 얻으려면 바로 사용 : 당신이 관계의 한 측면에서 하나의 개체가 있으면

NSArray *itemArray=[listArray valueForKey:@"items"]; 

당신은 가져올 필요없이 다른 모든 오브젝트를 찾을 수 있습니다.

관련 문제