Тем временем я попробовал подход, упомянутый Виллеком. Установка предиката выборки по умолчанию для контроллера массива изначально с помощью Interface Builder и выполнение следующего кода каждый раз, когда изменяется значение даты и даты, работало нормально.
let fetchRequest = ContactArrayController.defaultFetchRequest()
fetchRequest.predicate = NSPredicate(format: "events.@max.eventDate < %@", lastDate as NSDate)
try? ContactArrayController.fetch(with: fetchRequest, merge: false)
, где событие - это связанный объект с объектом в контроллер массива.
Однако для меня это кажется непосильной задачей, поскольку каждый раз необходимо извлекать данные в контроллер массива, а не просто применять фильтр
Может быть, есть лучшие решения