Вам нужно добавить условие в подзапрос: предполагая, что вы хотите включить CDCategory
объекты, для которых ЛЮБОЙ из entries
имеет дату между вашими двумя указанными датами, вы хотите, чтобы число ваших подзапросов было большеноль:
fetchRequest.predicate = NSPredicate(format: "SUBQUERY(entries, $entry, $entry.date BETWEEN {%@, %@}).@count > 0", dataController.week.startDate as CVarArg, dataController.week.endDate as CVarArg)
И наоборот, если вы хотите выбрать только те, для которых ни одна из дат записей не совпадает, вы хотите, чтобы счетчик был равен нулю:
fetchRequest.predicate = NSPredicate(format: "SUBQUERY(entries, $entry, $entry.date BETWEEN {%@, %@}).@count == 0", dataController.week.startDate as CVarArg, dataController.week.endDate as CVarArg)
Подобные конструкции позволятВы выбираете только те, где ВСЕ записи соответствуют вашим критериям.