Создание подклассов NSPredicate для добавления оператора

Какао определяет классы предикатов ( NSPredicate , NSExpression и т. Д.), Которые «предоставляют общие средства определения запросы в Какао » Программирование предикатов . Этот набор классов описывает то, что мне нужно, но с одним небольшим недостатком: мне нужны дополнительные операторы.

NSComparisonPredicate уже обрабатывает 14 операторов ( NSPredicateOperatorType ), но я хотел бы добавить, скажем, временные операторы ... или операторы для представления таких вещей, как:

  • " переменная имеет не менее n записей « (бинарный оператор)
  • » переменная имеет значение не более чем для n последовательных дней " (тернарный оператор)

Очевидно, мне нужно будет реализовать их самому, и модель данных, на которой выполняются такие запросы, должна будет поддерживать эти операторы. Но есть ли способ реализовать это и извлечь выгоду из существующих классов NSPredicate? Поскольку операторы были определены как enum , я сомневаюсь, что смогу расширить это поле. Или я полностью скучаю по лодке на этом ?!

5
задан 2 December 2011 в 21:32
поделиться