我有一个核心数据模型(已简化以使其更容易解释我想要做什么)。
作者可以出版许多书籍,而一本书可以包含许多章节。
在示例中,我想检索所有在书中有一章的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在数据库中检查什么。我只是在检查值,因此目前无法告诉您