【问题标题】:CoreData - NSFetchRequest AND Filter On Child Relationship EntitiesCoreData - NSFetchRequest 和过滤子关系实体
【发布时间】:2013-02-08 14:18:12
【问题描述】:

好的,假设我有许多类型为“Office”的实体,并且它有一个名为“employees”的关系,这是一个包含“Employee”对象的一对多关系。 “Employee”有一个名为“lastName”的属性。

鉴于此,我需要执行一个获取,返回一个 Office 对象数组,这些对象具有 > 0 个员工,但在返回的办公室中,员工关系中的 Employee 对象已被过滤为仅包含 lastName 等于的 Employee 对象“史密斯”。

我可以轻松地获取所有 Office 对象,然后遍历它们并删除所有姓名与 Smith 不匹配的员工,但这会删除商店中的这些对象。

我假设这里需要 SUBQUERY,但我似乎无法正确过滤它。有什么想法吗?

【问题讨论】:

  • 我似乎无法正确过滤,给我们看一些代码吗?
  • 您尝试做的事情是不可能的。获取请求返回一个对象数组,访问它们的关系会给出相关对象,它们当前是在托管对象上下文中定义的。过滤器可以限制获取请求返回的哪些对象,但不能限制返回对象的属性
  • 是的 Martin R,这就是我得出的结论。我想我将不得不抓住所有员工,过滤它们并将它们存储在一个临时的地方,而不触及所有员工的原始集合。非常感谢。

标签: iphone core-data


【解决方案1】:

您希望在谓词中使用SUBQUERY

[NSPredicate predicateWithFormat:@"SUBQUERY(employees, lastName, lastName LIKE[cd] %@).@count > 0", @"Smith"]

这对每个employees 关系执行子查询,测试提供的字符串的lastName,并计算至少有一个这样的员工。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多