2
코어 데이터 C.사용 자 NSPredicate는 I 세 엔티티 A, B가
이들 사이의 관계는이 오브젝트를 필터링하려면 다음 < - >> B, B < -> C한다.
A에는 '유형'이라는 속성이 있습니다.
A 및 B 관계는 a2b이고 B 및 C 관계는 b2c입니다. c_array는 C 객체의 목록입니다.
NSPredicate를 사용하여 A를 C로 필터링하고 A의 특성 'type'을 (를) 필터링하려고합니다.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"A" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSMutableArray *parr = [NSMutableArray array];
for (C *c in c_array) {
[parr addObject:[NSPredicate predicateWithFormat:@"ANY a2b.b2c = %@", c]];
}
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:[NSCompoundPredicate orPredicateWithSubpredicates:parr], [NSPredicate predicateWithFormat:@"type = %i", 0], nil]];
[fetchRequest setPredicate:predicate];
하지만 내가 예상 한 것은 아닙니다. 그래서 나는 다른 것을 시도했다.
predicate = [NSPredicate predicateWithFormat:@"type=%i AND (0!=SUBQUERY(a2b,$a2b,$a2b.b2c IN %@)[email protected])", 0, c_array];
예기치 않은 결과가 다시 발생했습니다. 누군가 나를 도울 수 있습니까? T T
답장을 보내 주셔서 감사합니다.) 줄 단위로 확인하여이 문제를 해결했습니다. 나는 B를 추가 할 때 C와 B 사이에 하나의 관계를 놓친다는 것을 알았습니다. 내 어리석은 실수에 대해 유감으로 생각합니다. 하지만 당신 NSNumber 문제를 지적, 그건 나에게 도움이 감사합니다. – brianLikeApple