Если ваш вопрос «как вы могли бы сделать это в основных данных», ответ будет именно таким, как вы описали. Создайте отношение «ко-многим» в каждой сущности и определите каждую как противоположность другой.
Если ваш вопрос «как это может сработать», вам может быть полезно взглянуть на базу данных sqlite, созданную из вашей модели, чтобы увидеть, как она все настраивает. CoreData довольно хорош в этом, поэтому вам не нужно заботиться о деталях, но если вы настаиваете на понимании деталей, ничто не мешает вам посмотреть на данные, чтобы увидеть, что они делают.
Как только вы это сделаете, вы должны пересмотреть отношения по мере необходимости, чтобы получить нужные вам атрибуты. Вы можете сделать это в коде, используя экземпляры NSManagedObject. Например:
NSManagedObject *manager = // get a reference to a manager here
NSSet *employees = [manager valueForKey:@"employees"];
for (NSManagedObject *employee in employees) {
NSString *employeeName = [employee valueForKey:@"name"];
// Do whatever else you want here
}
Этот пример также можно упростить, используя прямой доступ к свойству, а не синтаксис KVO, но вы поняли идею.
Если вы хотите пройти через это отношение «многие ко многим» более непосредственно как часть запроса выборки, то вы можете сделать некоторые вещи с предикатами, чтобы получить то, что вы хотите. Обратитесь к Руководству Apple по программированию предикатов , где приведены примеры того, что вы можете вставить в предикат