我设置了核心数据对象图,以便
Grandparent--(hasMany)-->>Parent--(hasMany)-->>Child
并且每个实体都有'modified'
属性。我想执行一个获取,返回每个祖父母实体,并在特定日期之后修改日期。这应该包含在该点之后具有修改日期的所有父实体,并且与子实体相同。
我可以轻松地使用
获取祖父母名单fetchRequest.predicate = [NSPredicate predicateWithFormat:@"modified > %@", lastSyncDate];
有没有办法编写谓词,以便我可以用同样的方式过滤它的关系?谢谢!
答案 0 :(得分:1)
你应该可以这样做:
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"modified > %@ OR ANY parents.modified > %@ OR ANY parents.children.modified > %@",
lastSyncDate,
lastSyncDate,
lastSyncDate];
(Parent
和Child
的属性分别称为parents
和children
。只需将它们更改为您调用它们的任何内容。)
<强>更新强>
看来你不能这样做。我认为你实际上需要使用SUBQUERY
。这个问题类似于你想要做的事情:
What's better way to build NSPredicate with to-many deep relationships?
答案 1 :(得分:0)
我最终只是抓住整个对象图并使用
过滤关系NSPredicate *predicate = [NSPredicate predicateWithFormat:@"modified > %@", lastSyncDate];
NSArray *modifiedChildren = [[parent.children allObjects] filteredArrayUsingPredicate:predicate];
这不是非常有效但似乎可以解决问题。