Введение

Предикаты предоставляют генералу средние значения указания запросов в Какао. Система предиката способна к обработке большого количества доменов, включая Базовые Данные и Центр внимания. Этот документ описывает предикаты в целом, их использование, их синтаксис и их ограничения.

Сразу

В Какао предикат является логическим оператором, оценивающим к булеву значению (истина или ложь). Существует два типа предиката, известного как сравнение и составной объект:

Какао поддерживает широкий диапазон типов предиката, включая следующее:

Можно также создать предикаты для отношений — такой как group.name matches 'work.*', ALL children.age > 12, и ANY children.age > 12— и для операций такой как @sum.items.price < 1000.

Предикаты какао обеспечивают средние значения кодирования запросов способом, который независим от хранилища, используемого для содержания искавших данных. Вы используете предикаты для представления логических условий, используемых для ограничения набора объектов, полученных Центром внимания и Базовыми Данными, и для фильтрации в памяти объектов.

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

Классы предиката

Какао обеспечивает NSPredicate и его два подкласса, NSComparisonPredicate и NSCompoundPredicate.

NSPredicate класс обеспечивает методы, чтобы оценить предикат и создать предикат из строки (такой как firstName like 'Mark'). Когда Вы создаете предикат из строки, NSPredicate создает надлежащий предикат и экземпляры выражения для Вас. В некоторых ситуациях Вы хотите создать сравнение или составные предикаты сами, когда можно использовать NSComparisonPredicate и NSCompoundPredicate классы.

Выражения предиката в Какао представлены экземплярами NSExpression класс. Самое простое выражение предиката представляет постоянное значение. Часто, тем не менее, Вы используете выражения, получающие значение для ключевого пути объекта, в настоящее время будучи оцененным в предикате. Можно также создать выражение, чтобы, в настоящее время представлять объект будучи оцененным в предикате, служить заполнителем для переменной или возвратить результат выполнения работы на массиве.

Для больше при создании предикатов и выражений, посмотрите Предикаты Создания.

Ограничения и ограничения

Если Вы используете предикаты с Базовыми Данными или Центром внимания, заботитесь, что они работают с соответствующим хранилищем данных. Нет никакого определенного языка реализации для запросов предиката; запрос предиката может быть переведен в SQL, XML или другой формат, в зависимости от требований запоминающего устройства (если действительно существует один).

Система предиката Какао предназначается для поддержки полезного диапазона операторов, поэтому не обеспечивает ни объединения набора, ни пересечения набора всех операторов, поддерживаемых всеми запоминающими устройствами. Поэтому не все возможные запросы предиката поддерживаются всеми запоминающими устройствами, и не все операции, поддерживаемые всеми запоминающими устройствами, может быть выражен NSPredicate и NSExpression объекты. Бэкэнд мог бы понизить предикат (например, он мог бы сделать чувствительное к регистру нечувствительное к регистру сравнение), или повысьте исключение, при попытке использовать неподдерживаемого оператора. Например:

Как использовать этот документ

Следующие статьи объясняют основы предикатов в Какао, объясняют, как создать и использовать объекты предиката и определяют синтаксис предиката: