Если вы правильно настроили модель базовых данных, то у вас есть отношение ко многим от сущности «Категория» к сущности «Элемент» и обратное отношение «один к одному» от «Элемент к категории». Кроме того, у вас есть «каскадное» правило удаления для отношения «многие» и «нулевое» правило удаления для отношения «один».
Исходя из этого, каждый раз, когда вы вставляете объект Item, установка его отношения между категориями автоматически вставляет этот элемент в соответствующую категорию. Удаление элемента автоматически удаляет его из соответствующей категории.
На стороне категории при удалении категории автоматически удаляются все соответствующие объекты элементов.
Поэтому, когда вы выбираете Предметы, вы уже выбрали для каждого объекта Предмета соответствующий ему объект Категории. Вам не нужно больше ничего делать. Обратите внимание, что по умолчанию вы фактически не извлекаете объект Category во время извлечения: вместо этого выдается ошибка при первой попытке доступа к объекту, и объект извлекается в это время. Это обеспечивает лучшую производительность, если вы не планируете немедленно использовать объект Category, сохраненный в только что выбранном объекте Item. Если вы планируете использовать объект Category почти каждый раз, когда получаете элемент, тогда вы должны использовать методы NSFetchRequest
- (void)setReturnsObjectsAsFaults:(BOOL)yesNo
- (void)setRelationshipKeyPathsForPrefetching:(NSArray *)keys
, чтобы сообщить Core Data, что вам теперь нужны ошибки и что вы запрашиваете предварительную выборку вашей категории.