Core Data中的关系、获取属性和表达式
1. 反向关系
在Core Data中,每个关系都可以有一个反向关系。关系和它的反向关系就像一枚硬币的两面。例如,在一个 Person 对象示例中, children 关系的反向关系可能是一个名为 parent 的关系。关系与其反向关系的类型不必相同,例如,一对一关系可以有一个多对多的反向关系,这在实际情况中很常见。从现实角度来看,一个人可以有多个孩子,而一个孩子通常只有一个亲生母亲和一个亲生父亲,但可能有多个父母和监护人。因此,根据需求和关系建模方式,可以选择使用一对一或多对多的反向关系。
如果向一个关系中添加一个对象,Core Data会自动将正确的对象添加到反向关系中。例如,如果有一个名为Steve的人,并为他添加了一个孩子,Core Data会自动将这个孩子的 parent 设置为Steve。
虽然关系并非必须有反向关系,但Apple通常建议始终创建并指定反向关系,即使在应用程序中不需要使用它。实际上,如果没有提供反向关系,编译器会发出警告。不过,也有一些例外情况,特别是当反向关系包含大量对象时,因为从一个关系中移除对象会触发从反向关系中移除该对象。移除反向关系需要遍历表示反向关系的集合,如果这个集合非常大,可能会影响性能。但除非有特殊原因,否则应该建模反向关系,因为它有助于Core Data确保数据完整性。如果因此出现性能问题,之后也可以相对容易地移除反向关系。
更多关于缺少反向关系如何导致完整性问题的信息,可以查看:
超级会员免费看
订阅专栏 解锁全文
11

被折叠的 条评论
为什么被折叠?



