我有两个实体,父实体和子实体。 Parent 实体与名为“children”的 Child 具有一对多关系。 Child 有一个名为“childName”的字符串属性。
我想在 Parent 上创建一个获取的属性,我们将其称为“specialChild”,它返回具有特定名称的 Child,我们说“Special”。当我访问获取的属性时,以下谓词返回一个空集:
- children.childName == "特殊"
- SUBQUERY(子项, $eachChild, $eachChild.childName = “特别”)。@count > 0
- SUBQUERY(children, $eachChild, ANY $eachChild.childName = “特别”)。@count > 0
我相信我在某种程度上搞乱了谓词,因为我对它们仍然缺乏经验。 (我可以从 Apple 找到关于“SUBQUERY”的零文档)我应该如何在父级的获取属性谓词中指定“childName 为特殊的子级”?
是的,我正在调用 -refreshObject:mergeChanges: 但我仍然收到空结果。是的,目标实体是 Child。
最佳答案
您想要的是parent==$FETCH_SOURCE AND childName=="Special"
。这会获取 childName
为“Special”且其 parent
是查找其特殊子项的对象的任何 Child
。
所获取的属性谓词中的属性必须存在于目标实体上。这里的目的地是 Child
,因此您不能使用 children
,因为它仅存在于 Parent
上。
如果您在代码中编写谓词,则 $FETCH_SOURCE
部分对应于您使用 self
的位置。如果没有它,您将获得每个特殊的子级,而不仅仅是附加到原始 Parent
的子级。它表示,子项的 parent
属性必须是查找获取的属性值的特定实例。
关于objective-c - 如何在获取的属性中指定多对多属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14131122/