我有一个核心数据模型(已简化以使其更容易解释我想要做什么)。

作者可以出版许多书籍,而一本书可以包含许多章节。
在示例中,我想检索所有在书中有一章的Autors,其中readDate为null。

- (NSArray *)incompleteChaptersInManagedObjectContext:(NSManagedObjectContext *)context
{
    NSFetchRequest* fetch = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([Author class])];
    NSPredicate* uidCondition = [NSPredicate predicateWithFormat:@"books.chapters.readDate!=nil"];
    [fetch setPredicate:uidCondition];

    NSArray* resultArray = [context executeFetchRequest:fetch error:&error];

..
..

这是行不通的,我正在努力寻找如何做到这一点。
此刻我
声明作者mutablearray。
-获得所有作者
-遍历他们所有的书
-遍历所有章节
-如果readDate为null,则将其添加到author数组

这可行,但是我想解决这个问题而不需要嵌套循环。

最佳答案

这看起来像是一个案例:SUBQUERY

NSFetchRequest* fetch = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([Author class])];

[NSPredicate predicateWithFormat:@"(SUBQUERY(books, $cd, SUBQUERY($cd.chapters, $m, $m.readDate == NULL).@count != 0).@count != 0"];
[fetch setPredicate:uidCondition];

不知道它是== nil还是NULL在数据库中检查什么。我只是在检查值,因此目前无法告诉您

07-26 09:38