Сразу скажу, что я неопытный программист Какао, и я прошу прощения, если на мой вопрос каким-то образом дан ответ в документации, и я просто пропустил его, или было что-то, чего я не понимаю в том, как работает NSPredicateEditor. Тем не менее, я пытался искать в документах и гуглил, чтобы получить небольшой эффект. Таким образом, я задаю вам вопрос.
Я пытаюсь отфильтровать табличное представление на основе базовых данных с помощью NSPredicateEditor. Фильтрация работает нормально, с точки зрения фильтрации строк на основе различных критериев, путем создания NSCompoundPredicate. Однако, когда строка в редакторе предикатов не имеет текста в своем поле поиска, возвращаемый NSPredicate представляет собой что-то вроде
dataName CONTAINS[cd] ""
... что не соответствует ни одной из записей базовых данных - не то, что я хочу. Если это поле поиска в этой строке пустое, по сути, я не хочу, чтобы оно вообще фильтровало мой набор данных.
Тогда мой вопрос: какое самое простое / лучшее решение игнорировать эти части предиката? Моя первоначальная идея заключалась в том, чтобы разбирать значение NSPredicateEditor строка за строкой с (NSPredicate *)predicateForRow:(NSInteger)row
и самостоятельно перестраивать предикат, игнорируя строки, которые пытаются соответствовать ""
, но это кажется излишне громоздким. Разобрав окончательный NSCompoundPredicate с - (NSArray *)subpredicates
и отредактировав его таким образом, также, возможно, я ошибаюсь. Есть ли более элегантный способ сделать это?
* Для ясности, я имею в виду редактирование копии предиката, которую я затем передаю контроллеру для представления таблицы, а не редактирование исходного предиката, который в данный момент хранится в NSPredicateEditor.