如果您正确设置了核心数据模型,那么您将拥有从 Category 实体到 Item 实体的一对多关系,以及从 Item 到 Category 的逆一对一关系。此外,您有一个用于一对多关系的“级联”删除规则和一个用于一对一关系的“无效”删除规则。
假设这样,每次插入 Item 对象时,设置其 Category 关系会自动将 Item 插入到相应的 Category 中。删除项目会自动将其从相应的类别中删除。
在 Category 方面,删除 Category 会自动删除所有相应的 Item 对象。
因此,当您获取 Items 时,您已经为每个 Item 对象获取了其对应的 Category 对象。你不需要做任何其他事情。请注意,默认情况下,您实际上并没有在获取期间检索 Category 对象:而是在您第一次尝试访问该对象时触发一个错误,并在那时检索该对象。如果您不打算立即使用存储在刚刚获取的 Item 对象中的 Category 对象,这将提供更好的性能。如果您打算几乎每次获取 Item 时都使用 Category 对象,那么您必须使用 NSFetchRequest 方法
- (void)setReturnsObjectsAsFaults:(BOOL)yesNo
- (void)setRelationshipKeyPathsForPrefetching:(NSArray *)keys
告诉 Core Data 你现在确实需要错误并且你要求预取你的 Category 关系。