假设我有3个实体Grandparent
,Parent
和Child
。
Grandparent - Parent
是一对多的关系
Parent - Child
是多对一的关系
Child
具有age
属性
我的目标是让Child
的所有Parent
个实体Parent.grandparent
都在某个Grandparent
。另外,我想按age
对获取的结果进行排序。我知道我可以通过多个步骤执行此操作,但我的问题是:如何在单个提取请求中完成此操作?
编辑:也许这个图表会比上面的描述更清晰一些。
答案 0 :(得分:0)
我假设变量和关系名称,将其更改为您在代码和模型中命名的任何名称。
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Child" inManagedObjectContext:context];
request.predicate = [NSPredicate predicateWithFormat:@"parent.grandparent == %@", grandParentObject];
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES]];
这应该有效。我习惯于编码完成,我没有在Xcode中输入,所以方法名称可能有些偏差,但你明白了。
答案 1 :(得分:0)
我很幸运,找到了这个答案 NSPredicate acting strange in NSFetchedResultsController
问题措辞不同,这就是为什么我需要一段时间才能找到它。基本上,我正在寻找的谓词具有以下格式:
[NSPredicate predicateWithFormat:@"SUBQUERY(parent, $x, $x.grandparent == %@).@count != 0", grandParent];