【问题标题】:How are to-many attributes specified in a fetched property?如何在获取的属性中指定多属性?
【发布时间】:2012-12-17 08:32:10
【问题描述】:

我有两个实体,Parent 和 Child。 Parent 实体与名为“children”的 Child 具有一对多关系。 Child 有一个名为“childName”的字符串属性。

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

  • children.childName == "特别"
  • SUBQUERY(儿童,$eachChild,$eachChild.childName = "特别").@count > 0
  • SUBQUERY(儿童,$eachChild,任何 $eachChild.childName = "特别").@count > 0

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

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

【问题讨论】:

  • 在第一个,children.name 还是children.childName?谓词需要使用实体上存在的属性名称。
  • 是的,对不起,我抄错了。它使用了正确的属性 childName。

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


【解决方案1】:

你想要的是parent==$FETCH_SOURCE AND childName=="Special"。这将获取任何Child,其childName 是“特殊”,其parent 是查找其特殊子代的对象。

获取的属性谓词中的属性必须存在于目标实体上。这里的目的地是Child,所以你不能使用children,因为它只存在于Parent

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

【讨论】:

  • 太棒了。我曾尝试过 $FETCH_SOURCE 的一些排列,但一定是弄乱了语法。谢谢!
猜你喜欢
  • 2019-05-20
  • 2010-10-29
  • 2015-09-28
  • 2011-07-31
  • 2019-07-22
  • 2017-09-02
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多