1

我知道 Apple 和共识都说在 Core Data 中,每个关系都应该有一个逆向关系。这不是一个询问是否确实如此的问题。我相信苹果和专家。我只是想了解其中的原因。不幸的是,通常没有给出原因。

有时,建立反向关系是不切实际的。有时,我想放弃它们。但我想知道权衡是什么(而不是不祥的“不要那样做,这很危险”)。

那么,我在问为什么不放弃 Core Data 中的反比关系?

4

1 回答 1

5

通常的答案是“他们需要帮助维护数据完整性”。这是一个具体的例子。

假设您有一个Department实体和一个Employee实体。Department与 有一对多关系employeesEmployee但没有对应的逆关系。有点做作,因为可能有充分的理由想要轻松查找员工的部门,但我想要一个简单的例子。

现在,假设我有一个名为“Department X”的特定部门实例,它用于公司的所有间谍。X 部门有 7 名员工。但是,灾难!特工 004 被敌对公司杀死。因此,您的应用会删除 Agent 004 的Employee实例。

Department现在,部门 X的实例有多少员工?

如果您对自己的工作不小心,它仍然有七名员工。但其中一个没有任何数据。为什么?因为没有人告诉Department实例它的一名员工已经离开,所以它认为一切都没有改变。六名正式员工,我猜是一名不死僵尸员工。

为了保持干净,您还需要获取DepartmentDepartment X 的实例,并从其员工列表中删除 Agent 004 的条目。

如果从Employeeback 到存在反向关系Department,并且您使用了合理的删除规则,这将自动发生。当您删除代理 004 的实例时,部门 X 的员工列表将立即显示只有六名员工。

如果没有反向关系,也不是不可能做到这一点,但如果你确实有一个,Core Data 会关注某些有助于维护对象图完整性的细节。

于 2013-04-30T17:42:59.553 回答