objective-c - 如何在获取的属性中指定多对多属性?

标签 objective-c xcode cocoa core-data xcode4

我有两个实体,父实体和子实体。 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。

visual depiction of data model

最佳答案

您想要的是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/

相关文章:

c++ - 从 CocoaPods 库中的编译中排除源文件

cocoa - NSButton 使用 setFont 不起作用

objective-c - 如何在菜单栏中获得类似聚光灯的文本输入效果?

ios - UILabel 自动布局 - 先水平拉伸(stretch)然后垂直拉伸(stretch)

ios - SocketRocket - 无效的 Sec-WebSocket-Accept

ios - UI 项目不显示在界面生成器中

ios - 如何在项目之间快速移动 SQLite DB?

iphone - 将 UITextField 文本值转换为 bool 值

ios - 检测后退按钮是否按下问题 - GLKViewController

objective-c - Info.plist 上传错误中的 CFBundleVersion