【问题标题】:Get linked entities with many-to-many link to themselves?获取与自身具有多对多链接的链接实体?
【发布时间】:2014-02-06 11:55:42
【问题描述】:

我有类似以下情况:

问题是当我添加从一个对象到另一个对象的链接时,我添加了一次。因此,如果 2 个对象被链接,则一个具有 directReports == 1,managers = 0 和另一个 directReports == 0managers == 1

如果我想获取所有链接的对象,那么我不能将谓词写为(directReports.count > 0) OR (managers.count > 0)(这是被禁止的)。所以我应该写成(ANY directReports != nil) OR (ANY managers != nil)

那么有没有更好的方法来解决这个问题。例如,我看到可以在实体上创建一个类别,但我可以在谓词中使用它吗?

【问题讨论】:

  • 您到底想获取什么?链接到任何其他对象的所有对象?
  • 链接到任何其他同类型对象的所有对象

标签: ios core-data many-to-many entity-relationship


【解决方案1】:

两个谓词

(directReports.@count > 0) OR (managers.@count > 0)

(注意是"@count",不是"count")和

(ANY directReports != nil) OR (ANY managers != nil)

应该努力获取与任何其他员工相关联的所有员工 (通过两种关系之一)。

类别方法没有帮助,因为(基于 SQLite)核心数据的谓词 fetch 请求只能使用持久属性,不能使用瞬态属性或 Objective-C 方法。

【讨论】:

  • 感谢@count,但我希望听到是否可以将“condition1 OR condition2”替换为“condition3”(没有或,以及类似的)
  • @user2083364:我认为这是不可能的。 - 类别方法也无济于事,因为 Core Data 获取请求中的谓词只能使用 persistent 属性。因此,唯一的选择是添加另一个属性totalCount,每次添加或删除关系时都必须更新该属性。我怀疑这是否值得。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多