从关系中获取请求 CoreData
Fetch request CoreData from relationship
是这样的情况,我在CoreData中有两个实体。
- 问题(章节:int,Answers:array)
- 回答(日期,Correct:bool)
这就是它们之间的关系:
- 问题实体有它所属的章节和该问题的答案历史(这是一种关系)。
- 答案实体知道问题何时被回答以及是否正确。
- 一个问题有很多答案。
我想要的最终结果是这样的...
Fetch questions WHERE chapter = <some> and (LAST) answer.correct = YES
我是核心数据的新手,现在我正在做很多步骤,但我想知道我是否可以只用一个 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)"];
检查正确答案的最大日期是否等于所有答案的最大日期。
是这样的情况,我在CoreData中有两个实体。
- 问题(章节:int,Answers:array)
- 回答(日期,Correct:bool)
这就是它们之间的关系:
- 问题实体有它所属的章节和该问题的答案历史(这是一种关系)。
- 答案实体知道问题何时被回答以及是否正确。
- 一个问题有很多答案。
我想要的最终结果是这样的...
Fetch questions WHERE chapter = <some> and (LAST) answer.correct = YES
我是核心数据的新手,现在我正在做很多步骤,但我想知道我是否可以只用一个 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)"];
检查正确答案的最大日期是否等于所有答案的最大日期。