Ios 从关系中获取请求CoreData

Ios 从关系中获取请求CoreData,ios,objective-c,core-data,Ios,Objective C,Core Data,在这种情况下,我在CoreData中有两个实体 问题(章节:整数,答案:数组) 回答(日期,正确:bool) 这就是它们之间的关系: 问题实体有它所属的章节和该问题答案的历史记录(这是一种关系) 答案实体知道问题何时被回答以及答案是否正确 一个问题有很多答案 我想要的最终结果是这样的 Fetch questions WHERE chapter = <some> and (LAST) answer.correct = YES chapter=和(最后)答案所在的问题。corr

在这种情况下,我在CoreData中有两个实体

  • 问题(章节:整数,答案:数组)
  • 回答(日期,正确:bool)
这就是它们之间的关系:

  • 问题实体有它所属的章节和该问题答案的历史记录(这是一种关系)
  • 答案实体知道问题何时被回答以及答案是否正确
  • 一个问题有很多答案
我想要的最终结果是这样的

Fetch questions WHERE chapter = <some> and (LAST) answer.correct = YES
chapter=和(最后)答案所在的问题。correct=是
我对核心数据有点陌生,现在我正在做很多步骤,但我想知道,如果只使用一个NSFetchedResultsController而不过滤数组,是否可以实现这一点


非常感谢你的帮助

试试这个谓词。我可以为你工作

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

有点复杂,但我认为以下内容将满足您的需求:

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

这将检查正确答案的最长日期是否等于所有答案的最长日期。

嗨,Pradip,我尝试了你的解决方案,但它崩溃了。。。更接近实际的是。。。filter=[NSPredicate predicateWithFormat:@“chapter=%@和ANY answers.isCorrect=YES”,self.chapter];上面写着“***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“不支持的函数表达式回答[LAST].isCorrect”“”,
(LAST)
在您的问题中是什么意思?最近的?最后根据一些未指定的排序?还有别的吗?嗨,汤姆!是的,这将是最近的。。。我的意思是,如果一个问题被回答了10次,我只关心最近的回答是否正确谢谢!!!我想这是最后一个正确答案,但它对我帮助很大,非常感谢!