Ваша модель очень похожа на нормализованную модель типа базы данных. CoreData не является базой данных, поэтому некоторые требования к данным моделирования являются более гибкими при ее использовании. Например, many to many
отношения возможны (и поощряются).
Создайте свою модель таким образом ...
Person
------
name: String
------
assignedVenues: Many relationship to `venue` type
Теперь у каждого отношения есть обратное свойство, поэтому ...
Venue
------
name: String
------
managers: Many relationship to `Person` type
Теперь вы можете go от Макса до назначенных ему мест, просто выполнив ...
let selectedPerson = // fetch Max from CoreData
let venues = selectedPerson.assignedVenues
Точно так же вы можете go из места, чтобы найти всех людей, управляющих это ...
let someVenue = // fetch venue from CoreData
let managers = someVenue.managers
Чтобы удовлетворить ваш вопрос о поиске всех мест, которыми Макс не управляет, вы можете теперь сделать запрос, подобный ...
let selectedPerson = //fetch Max
let predicate = NSPredicate(format:"NONE managers == %@", selectedPerson) // Its been a long time since I did CoreData so forgive me if this syntax isnt correct but the idea is correct. :D
Теперь вы можете использовать это предикат, чтобы получить все venues
, где max НЕ является одним из менеджеров места.
Удалив «отображение», которое требуется в чем-то вроде SQLite et c ..., вы можете сделать многое проще для себя.