【发布时间】:2014-02-06 18:26:36
【问题描述】:
有没有办法获取核心数据实体并过滤关系?例如,如果我有一个 Parent 实体和一个 Children 实体。 Children 分配给父母。我可以得到一个Parent 实体,并且只有Children 和Blonde 头发,即Male。
我知道我可以获取所有子对象,然后在获得对象后对其进行过滤,但是如果我使用过滤结果更改分配给父对象的子对象,则会弄乱相反的结果。
【问题讨论】:
-
"...但是如果我使用过滤结果更改分配给父级的子级..." - 你为什么要这样做? - 您可以过滤
theParent.children,或使用一些谓词“parent = ... AND hairColor = ...”对 Children 实体执行获取请求。你想达到什么目的? -
@MartinR 当我运行 fetch 时,我得到了所有的父母和孩子。但是我只需要父母反对特定的孩子。因此,我通常在孩子身上运行
filterArrayWithPredicate以获得我需要的孩子,然后将theParents.children设置为过滤后的结果。这样做会破坏逆向。 -
将
theParent.children设置为过滤结果可能是个坏主意。您可以使用自定义方法(如下面的答案),或者在 Core Data 模型检查器中定义“获取的属性”。我没有获取属性的实际经验,但根据文档,它们的优点是结果被缓存。
标签: ios objective-c core-data