核心数据:总是有反比关系.为什么?

fzw*_*zwo 1 core-data relationship

我知道Apple和共识都说在核心数据中,每个关系都应该有反转.这不是一个问题是否确实如此.我相信苹果和专家.我只想理解这个推理.不幸的是,往往没有给出理由.

有时,反向关系是不切实际的.有时候,我想放弃它们.但是我想知道这些权衡是什么(而不是一个不祥的"不要那样做,它是危险的 ").

那么,我问的是不放弃核心数据中的反向关系的原因什么?

Tom*_*ton 5

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

假设您有一个Department实体和一个Employee实体.Department有一个多对多的关系employees,Employee但没有相应的反向关系.有点做作,因为可能有很好的理由想要轻松查找员工的部门,但我想要一个简单的例子.

现在,假设我有一个名为"Department X"的特定部门实例,该实例适用于所有公司的间谍.X部门有7名员工.但是,灾难!特工004被竞争对手公司杀害.因此,您的应用删除了代理004的Employee实例.

现在,DepartmentX部门的实例有多少名员工?

如果你没有小心你正在做什么,它仍然有七名员工.但其中一个没有任何数据.为什么?因为没有人告诉Department实例其中一名员工已离开,所以它认为没有任何改变.六位正式员工,我猜是一名不死僵尸员工.

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

如果Employee返回到存在反向关系Department,并且您使用了理智的删除规则,则会自动发生这种情况.当您删除Agent 004的实例时,Department X的员工列表将立即显示六名员工.

在没有反向关系的情况下实现这一目标并非不可能,但如果您确实拥有反向关系,Core Data将会查看某些有助于维护对象图完整性的细节.