2015-01-05 3 views
0

이 상황은 CoreData에 두 개의 엔티티가 있습니다.관계에서 CoreData 가져 오기

  • 질문 (장 : INT, 답변 : 배열)
  • 대답 (날짜, 올바른 : 부울) :

    • 문제의 실체를

    그리고이 사람들이 관련되어 어떻게 그것이 속한 장과 그 질문에 대한 답변의 역사를 가지고 있습니다 (그것은 관계입니다).

  • 답변 엔티티는 질문에 답한 시점과 정확한지 여부를 알고 있습니다.
  • 하나의 질문에 여러 답이 있습니다.

내가 원하는 최종 결과이 같은 것입니다 ...

Fetch questions WHERE chapter = <some> and (LAST) answer.correct = YES 

나는 핵심 데이터와 새의 종류를 해요 그리고 지금 나는 많은 단계를하고 있어요하지만 난 알고 싶어 배열을 필터링하지 않고 NSFetchedResultsController 하나만으로이 작업을 수행 할 수 있습니다.

도움 주셔서 감사합니다.

+0

질문에서'(LAST)'은 무엇을 의미합니까? 가장 최근? 미확인 정렬에 따라 마지막? 다른 것? –

+0

안녕하세요 Tom! 네, 가장 최근 일 것입니다 ... 제 질문은 10 번 답변을 받았을 때 가장 최근의 답변이 올바르게 응답 한 것입니다. – mtet88

답변

1
약간 복잡한

,하지만 난 다음 당신이 원하는 것을 얻을 것이라고 생각 :

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"chapter like %@ AND (SUBQUERY(answer, $t, $t.correct == YES)[email protected] = SUBQUERY(answer, $t, $t.correct IN {YES, NO})[email protected])"]; 

이 정답에 대한 최대 날짜가 모든 대답에 대한 최대 날짜와 같은지 여부를 확인합니다.

+0

감사합니다 !!! 나는 이것이 마지막 정답을 돌려 준다고 생각하지만, 많이 도움이된다. 고맙다. – mtet88

1

이 술어를 사용하십시오. 당신을 위해 일할 수 있습니다.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"chapter = '%@' AND answer[LAST].correct=TRUE",chapterName]; 
+0

안녕하세요, Pradip, 당신의 해결책을 시도했지만 추락했습니다 ... 더 가까운 일은 ... filter = [NSPredicate predicateWithFormat : @ "chapter = % @ AND ANSI answers.isCorrect = YES", self.chapter]; – mtet88

+0

그것은 "*** 캐치되지 않은 예외 'NSInvalidArgumentException'으로 인해 응용 프로그램을 종료합니다, 이유 : '지원되지 않는 함수 표현식이 [마지막] .isCorrect'에 응답" – mtet88

관련 문제