如何在fetched属性中指定to-many属性?

时间:2013-01-02 23:54:21

标签: objective-c xcode cocoa core-data xcode4

我有两个实体,父母和孩子。 Parent实体与Child的多对多关系名为“children”。 Child具有名为“childName。”的String属性。

我想在Parent上创建一个fetched属性,让我们称之为“specialChild”,返回一个具有特定名称的Child,让我们说“Special”。当我访问fetched属性时,以下谓词返回一个空集:

  • children.childName ==“Special”
  • SUBQUERY(儿童,$ eachChild,$ eachChild.childName = “特别”)。@ count> 0
  • SUBQUERY(children,$ eachChild,ANY $ eachChild.childName = “特别”)。@ count> 0

我相信我会以某种方式弄乱谓词,因为我对他们仍然缺乏经验。 (我可以在“SUBQUERY”上找到Apple的零文档)我如何在Parent的fetched属性谓词中指定“childName为Special的子”?

是的,我正在调用-refreshObject:mergeChanges:但我仍然收到一个空结果。是的,目标实体是Child。

visual depiction of data model

1 个答案:

答案 0 :(得分:2)

你想要的是parent==$FETCH_SOURCE AND childName=="Special"。这会得到Child为“特殊”的任何childName,其parent是查找其特殊孩子的对象。

目标实体上必须存在fetched属性谓词中的属性。目的地为Child,因此您无法使用children,因为Parent仅存在{。}}。

$FETCH_SOURCE部分对应于您在代码中编写谓词时使用self的位置。没有它,你就会得到每一个特殊的孩子,而不仅仅是附属于原始Parent的孩子。它说,子项的parent属性必须是查找获取的属性值的特定实例。