2012-01-30 1 views
7

A. bB. a은 역 대 다수 관계입니다. A 작업이 술어 않는 이유 :이 하나이 NSPredicate에서 "NOT IN"이 작동하지 않는 이유는 무엇입니까?

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT SELF IN %@", bObject.a]; 

하지 않지만 :

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT %@ IN b", bObject]; 

을 나는 두 조건이 동일한 결과를 제공해야한다고 생각 - bObject와 어떤 관계를 통해이 없습니다 A의 수집을 a<-->b. 그러나 사실, 첫 번째 것은 올바른 컬렉션을 제공하고 두 번째는 올바른 컬렉션을 제공하지 않습니다.

업데이트 : 여기


sample project 상기 A이다. bAccount으로 구현됩니다. filtered_clientsB. aClient으로 구체화됩니다. filtered_by.

차이점을 확인하려면 MasterViewController.m의 143 번째 줄과 144 번째 줄의 주석 달기를 전환하십시오.

내 코드에서 버그를 찾거나 버그 번호 Core Data임을 확인하면 Apple에 신고 할 수 있습니다. 매우 감사합니다. 문서에서

+0

두 번째 술어는 b가 b에없는 경우 테스트하는 것 같습니다 - 그게 무슨 뜻입니까? –

+0

Nick이 지적했듯이 : 좀 더 많은 코드를 제공 할 수 있습니까? 'b' 변수는 무엇입니까? 가져 오기 요청을 어떻게 생성합니까? –

+0

더 명확히하기 위해 변수 이름을 B의 인스턴스 인 "bObject"로 변경했습니다. – an0

답변

0

:

중요

당신은 모두 에서 다 대다 관계를 정의해야합니다 방향을 - 즉, 당신은 각각 상대방의 역되고,이 개 관계를 지정해야합니다. 하나의 방향으로 에서 대다 관계를 정의하고 다 대다로 사용하려고 할 수 없습니다. 그렇다면 은 참조 무결성 문제로 끝날 것입니다.

그래서이를 확인 :

  1. A가 갖는 많은 관계 B.에
  2. B A는 A.
  3. 많은 관계하는 관계는 B 관계의 역수 갖는다 .
  4. B 관계는 A 관계의 역입니다.
+0

아래의 질문과 그에 대한 설명을 읽어보십시오. 물론, 그것은 다분히 관계가 있습니다. – an0

+0

두 번 확인해 주셨습니다. – Mundi

+0

예, 다시 확인했습니다. – an0

3

또 다른 아이디어입니다. bObjectNOT으로 "무효화"하려했을 수도 있습니다. 따라서 다음을 시도해보십시오.

@"NOT (%@ IN b)" 
+1

@ "NOT % @ IN b"와 동일합니다. – an0

0

나는이 질문을 통해 오는 사람들에 대한 답을 발견했다고 생각합니다. 분명히 적어도 2 대 다 관계가있는 경우에는 SELF를 사용하여 작업해야합니다. 이것은 나를 위해 작동합니다 :

NOT (SELF IN %@) 
관련 문제