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

时间:2014-05-22 08:50:21

标签: ios objective-c core-data entity

了解Core Data中实体之间的关系。我没有看到建立两个实体之间关系的真正原因。如果其中一个实体包含可以通过具有NSManagedObject类型的属性来容纳另一个实体的属性,则可以单独连接它们。

@property (nonatomic, strong ) NSManagedObject *AssetType;

1 个答案:

答案 0 :(得分:2)

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

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

entityB = entityA.someRelationship;

真正的建议是根据对象图 !!!

进行思考

进一步参考:Core Data Overview by objc.io。

更新1

另一个重要优势是关系允许您利用删除规则,并且通过反向关系,您可以保持图表的完整性。

请参阅Relationships and Fetched Properties