Фильтруйте NSArraycontroller Core Data перед поиском - PullRequest
0 голосов
/ 03 марта 2020

У меня есть NSArrayController, управляющий контактами, хранящимися в Базовых данных и представленных в NSTable. Таблица предоставляет пользователю поле поиска для поиска контактов по имени. Все реализовано в Swift с использованием привязок Какао и работает хорошо. Теперь я хочу добавить дополнительный фильтр, прежде чем пользователь введет строку поиска. Фильтр должен ограничивать контакты с помощью дополнительного атрибута, например даты создания. Как это может быть сделано? Через изменение предиката или мне нужно создать подкласс NSArrayController?

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 04 марта 2020

Тем временем я попробовал подход, упомянутый Виллеком. Установка предиката выборки по умолчанию для контроллера массива изначально с помощью Interface Builder и выполнение следующего кода каждый раз, когда изменяется значение даты и даты, работало нормально.

 let fetchRequest = ContactArrayController.defaultFetchRequest()
 fetchRequest.predicate = NSPredicate(format: "events.@max.eventDate < %@", lastDate as NSDate)
 try? ContactArrayController.fetch(with: fetchRequest, merge: false)

, где событие - это связанный объект с объектом в контроллер массива.

Однако для меня это кажется непосильной задачей, поскольку каждый раз необходимо извлекать данные в контроллер массива, а не просто применять фильтр

Может быть, есть лучшие решения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...