Core Data中设置实体间关系的原因
Posted
技术标签:
【中文标题】Core Data中设置实体间关系的原因【英文标题】:Reason for setting relationships among entities in Core Data 【发布时间】:2014-05-22 08:50:21 【问题描述】:在了解了 Core Data 中实体之间的关系之后。我看不出在两个实体之间建立关系的真正原因。如果其中一个实体包含可以通过具有NSManagedObject
类型的属性来容纳另一个实体的属性,则它们可以单独连接。
@property (nonatomic, strong ) NSManagedObject *AssetType;
【问题讨论】:
【参考方案1】:这是一个您必须了解的概念:Core Data 不是数据库,而是对象图管理器,并且作为第二个功能,它提供持久性(例如,使用 Sqlite 存储)。
也就是说,如果你有两个独立的实体,并且你需要根据属于另一个实体的条件来检索值,你需要运行两个请求并在内存中过滤结果。相反,如果你建立了一个关系,你可以创建一个带有特定谓词的请求,让 Core Data 为你检索正确的结果。此外,通过关系,您可以访问属于另一个实体的对象,就像访问属性对象一样简单。例如,下面的 sn-p 表示基于entityA
,我可以访问一个名为someRelationship
的属性,该属性允许检索一个(或多个)EntityB
类型的实体。如果someRelationship
已设置为多对多,您将收到一个或多个EntityB
实体。
entityB = entityA.someRelationship;
真正的建议是考虑对象图!!!
进一步参考:Core Data Overview by objc.io。
更新 1
另一大优势是关系允许您利用删除规则,并且通过反向关系,您可以保持图表的完整性。
见Relationships and Fetched Properties。
【讨论】:
以上是关于Core Data中设置实体间关系的原因的主要内容,如果未能解决你的问题,请参考以下文章