Ios 在核心数据中设置实体间关系的原因

Ios 在核心数据中设置实体间关系的原因,ios,objective-c,core-data,entity,Ios,Objective C,Core Data,Entity,了解核心数据中实体之间的关系后。我看不出在两个实体之间建立关系的真正原因。如果其中一个实体包含一个属性,该属性可以通过具有类型为NSManagedObject的属性来容纳另一个实体,则可以单独连接这些实体 @property (nonatomic, strong ) NSManagedObject *AssetType; 这是一个您必须理解的概念:核心数据不是一个数据库,而是一个对象图管理器,作为第二个功能,它提供持久性(例如使用Sqlite存储)。 如果您有两个独立的实体,并且需要根据属于另

了解核心数据中实体之间的关系后。我看不出在两个实体之间建立关系的真正原因。如果其中一个实体包含一个属性,该属性可以通过具有类型为
NSManagedObject
的属性来容纳另一个实体,则可以单独连接这些实体

@property (nonatomic, strong ) NSManagedObject *AssetType;

这是一个您必须理解的概念:核心数据不是一个数据库,而是一个对象图管理器,作为第二个功能,它提供持久性(例如使用Sqlite存储)。

如果您有两个独立的实体,并且需要根据属于另一个实体的条件检索值,那么您需要运行两个请求并在内存中过滤结果。相反,如果您设置了一个关系,您可以创建一个带有特定谓词的请求,并让核心数据为您检索正确的结果。此外,通过关系,您可以访问属于另一个实体的对象,就像访问属性对象一样简单。例如,下面的代码片段说,基于
entityA
我可以访问一个名为
someRelationship
的属性,该属性允许检索类型为
EntityB
的一个(或多个)实体。如果设置了多个
someRelationship
,您将收到一个或多个
EntityB
实体

entityB = entityA.someRelationship;
真正的建议是从对象图的角度思考

进一步参考:由objc.io提供

更新1

另一个最大的优势是,关系允许您利用删除规则,并且通过反向关系,您能够保持图形的完整性