我有一个核心数据模型(做了一个简化以便更容易解释我想做什么)。
一个作者可以出版多本书,一本书可以有很多章节。 在示例中,我想检索在一本书中有一章的所有作者,其中 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];
..
..
这行不通,我正在努力寻找如何做到这一点。 此刻的我 声明一个作者可变数组。 - 获取所有作者 - 循环浏览他们所有的书 - 遍历所有章节 - 如果 readDate 为空,将其添加到作者数组
这行得通,但我想在没有嵌套循环的情况下解决这个问题。
最佳答案
对于嵌套的一对多关系,一个 SUBQUERY 是必要的(正如@geo 已经正确说过的)。 但是一个 SUBQUERY 就足够了:
[NSPredicate predicateWithFormat:@"SUBQUERY(books, $b, ANY $b.chapters.readData == NULL).@count > 0"]
(我假设“书籍”和“章节”实际上是对多关系,即使你的 图表将它们显示为一对一关系。)
关于ios - Objective-C - 从核心数据中检索一对多关系数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17548447/