核心数据反向关系

Posted

技术标签:

【中文标题】核心数据反向关系【英文标题】:Core Data inverse relation 【发布时间】:2009-09-11 07:27:47 【问题描述】:

Apple 的 Core Data 框架中的逆向关系示例是什么?

【问题讨论】:

【参考方案1】:

有一个简单的解释:http://brandontreb.com/core-data-quicktip-inverse-relationships/

【讨论】:

链接本身不足以回答问题,因为它们经常丢失资源。您的链接转到 404 错误页面。请在此处链接的引用中包含答案信息。【参考方案2】:

(迟到总比没有好)

当您有 2 个或更多实体时,您可以建立关系。以 例如 为例,有 2 个实体:BookPublisher。我们之间有一个非常简单的关系:

每本书都有一个出版商一个出版商可以出版很多书。

(在 coredata 中,关系不是 RDBMS 中的实体。事实上,关系是 1 个实体的一部分。coredata 中 A 和 B 之间的关系意味着,A 存储另一个实体的引用。因此,当创建托管对象时来自实体 A,则关系将成为从实体 A 创建的任何对象的属性。)

在上面的示例中,图书与出版商之间是一对一的关系,而出版商与图书之间是一对多的关系。这意味着书籍和出版商有两种关系无论是一对一还是一对多,这种双向关系在coredata中设置为反向。这种关系称为反向关系.如果您将书籍设置为与出版商相反,那么出版商将自动成为书籍的反转。

这在技术上不是必需的,但苹果强烈推荐。如果一个被改变,另一个会受到影响。这让我们做的是让对象图更加可控和一致。大多数关系都是这样的双向关系。

来源:Lynda.com

【讨论】:

【参考方案3】:

来自谷歌的定义:

"in·逆 ˈinvərs,inˈvərs

形容词 1. 在位置、方向、顺序或效果上相反或相反。 “残障与社会交往之间的明显反比关系”

名词 名词:逆;复数名词:倒数 1. 与其他事物相反或相反的事物。 “他的方法与大多数研究相反””

您对 Apple 的要求:

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/TroubleshootingCoreData.html#//apple_ref/doc/uid/TP40001075-CH26-SW1

“Core Data 使用反向关系来维护数据模型内的引用完整性。如果不存在反向关系并且删除了对象,则需要手动清理该关系。”

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/HowManagedObjectsarerelated.html

"逆向关系

大多数对象关系本质上是双向的。如果一个部门与在该部门工作的员工之间存在一对多关系,则从员工到部门之间存在一对一的反向关系。主要的例外是获取的属性,它表示弱的单向关系——从目标到源没有关系。请参阅弱关系(获取的属性)。

强烈建议您对两个方向的关系进行建模,并适当地指定反向关系。如果进行更改,Core Data 使用此信息来确保对象图的一致性(请参阅操作关系和对象图完整性)。”

一个很好的例子是这里的第二个答案,它应该被赞成:

Does every Core Data Relationship have to have an Inverse?

【讨论】:

【参考方案4】:

试试这个(“核心数据关系教程iphone”的第一个谷歌结果):

http://www.raywenderlich.com/934/core-data-tutorial-getting-started

【讨论】:

链接中没有解释,我自己是从本教程中来的,以了解什么是反比关系;o) 我提到谷歌的原因应该是对你下一步寻找答案的提示。 . . ;)

以上是关于核心数据反向关系的主要内容,如果未能解决你的问题,请参考以下文章

核心数据反向关系

使用核心数据的父实体继承和反向关系

从核心数据获取请求中排除反向关系

创建核心数据反向关系

核心数据反向关系未设置

核心数据继承 - 管理子类的反向关系