13.8. Implementing Relationships in Core Data

Problem

You want to be able to link your managed objects to each other: for instance, linking a Person to the Home he lives in.

Solution

Use inverse relationships in the model editor.

Discussion

Relationships in Core Data can be one-to-one, inverse one-to-many, or inverse many-to-many. Here is an example of each type of relationship:

One-to-one relationship

An example is the relationship between a person and her nose. Each person can have only one nose and each nose can belong to only one person.

Inverse one-to-many relationship

An example is the relationship between an employee and his manager. The employee can have only one direct manager, but his manager can have multiple employees working for her. Here the relationship of the employee with the manager is one-to-one, but from the manager’s perspective, the relationship is one (manager) to many (employees); hence the word inverse.

Inverse many-to-many relationship

An example is the relationship between a person and a car. One car can be used by more than one person, and one person can have more than one car.

In Core Data, you can create one-to-one relationships, but I highly recommend that you avoid doing so because, going back to the example in the preceding list, the person will know what nose she has but the nose will not know who it belongs to. Please note that this is a different one-to-one model than what you might have seen in other database management systems where Object A and B will ...

Get iOS 5 Programming Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.