NSPredicate
NSPredicate
класс используется для определения логических условий, используемых для ограничения поиска или для выборки или для фильтрации в памяти.
Вы используете предикаты для представления логических условий, используемых для описания объектов в персистентных хранилищах и фильтрации в памяти объектов. Несмотря на то, что распространено создать предикаты непосредственно из экземпляров NSComparisonPredicate
, NSCompoundPredicate
, и NSExpression
, Вы часто создаете предикаты из строки формата, анализирующейся методами класса для NSPredicate
. Примеры строк формата предиката включают:
Простые сравнения, такой как
grade == "7"
илиfirstName like "Shaffiq"
Случай и диакритические нечувствительные поиски, такой как
name contains[cd] "itroen"
Логические операции, такой как
(firstName like "Mark") OR (lastName like "Adderley")
В OS X v10.5 и позже, можно создать между предикатами такой как
date between {$YESTERDAY, $TOMORROW}
.
Можно создать предикаты для отношений, таких как:
group.name like "work*"
ALL children.age > 12
ANY children.age > 12
Можно создать предикаты для операций, такой как @sum.items.price < 1000
. Для ссылки полного синтаксиса обратитесь к Руководству по программированию Предиката.
Можно также создать предикаты, включающие переменные, так, чтобы предикат мог быть предопределен прежде, чем заменить конкретными значениями во время выполнения. В OS X v10.4, для предикатов, использующих переменные, оценка является двумя процессами шага (см. predicateWithSubstitutionVariables:
и evaluateWithObject:
). В OS X v10.5 и позже, можно использовать evaluateWithObject:substitutionVariables:
, который комбинирует эти шаги.
Наследование
-
NSObject
-
NSPredicate
-
NSComparisonPredicate
-
NSCompoundPredicate
-
NSObject
-
NSPredicate
-
NSComparisonPredicate
-
NSCompoundPredicate
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
NSCopying
-
NSObject
-
NSSecureCoding
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.4 и позже.
-
Создает и возвращает новый предикат, сформированный путем создания новой строки с данным форматом и парсинга результата.
Объявление
Objective C
+ (NSPredicate *)predicateWithFormat:(NSString *)
format
,...
Параметры
format
Строка формата для нового предиката.
...
Список разделенных запятой значений параметров для замены в
format
.Возвращаемое значение
Новый предикат, сформированный путем создания новой строки с
format
и парсинг результата.Обсуждение
Для получения дополнительной информации формата строки формата и ограничений на подстановку переменных, посмотрите Синтаксис Строки формата Предиката.
Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.4 и позже.
-
Создает и возвращает новый предикат путем замены значениями в данном массиве в строку формата и парсинга результата.
Объявление
Swift
init(format
predicateFormat
: String, argumentArrayarguments
: [AnyObject]?) -> NSPredicateПараметры
predicateFormat
Строка формата для нового предиката.
arguments
Параметры для замены в
predicateFormat
. В значения заменяютpredicateFormat
в порядке они появляются в массиве.Возвращаемое значение
Новый предикат путем замены значениями в
arguments
вpredicateFormat
, и парсинг результата.Обсуждение
Для получения дополнительной информации формата строки формата и ограничений на подстановку переменных, посмотрите Синтаксис Строки формата Предиката.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.4 и позже.
-
Создает и возвращает новый предикат путем замены значениями в списке аргументов в строку формата и парсинга результата.
Объявление
Swift
init(format
format
: String, argumentsargList
: CVaListPointer) -> NSPredicateObjective C
+ (NSPredicate *)predicateWithFormat:(NSString *)
format
arguments:(va_list)argList
Параметры
format
Строка формата для нового предиката.
argList
Параметры для замены в
predicateFormat
. В значения заменяютpredicateFormat
в порядке они появляются в списке аргументов.Возвращаемое значение
Новый предикат путем замены значениями в
argList
вpredicateFormat
и парсинг результата.Обсуждение
Для получения дополнительной информации формата строки формата и ограничений на подстановку переменных, посмотрите Синтаксис Строки формата Предиката.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.4 и позже.
-
Возвращает копию получателя с переменными получателя, которыми заменяют значения, указанные в данном словаре переменных замены.
Объявление
Swift
func predicateWithSubstitutionVariables(_
variables
: [NSObject : AnyObject]) -> Self!Objective C
- (instancetype)predicateWithSubstitutionVariables:(NSDictionary *)
variables
Параметры
variables
Словарь переменных замены. Словарь должен содержать пары ключ/значение для всех переменных в получателе.
Возвращаемое значение
Копия получателя с переменными получателя, которыми заменяют значения, указанные в
variables
.Обсуждение
Сам получатель не изменяется этим методом, таким образом, можно снова использовать его для любого числа замен.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.4 и позже.
-
Создает и возвращает предикат, всегда оценивающий к данному значению.
Объявление
Swift
init(value
value
: Bool) -> NSPredicateObjective C
+ (NSPredicate *)predicateWithValue:(BOOL)
value
Параметры
value
Значение, к которому новый предикат должен оценить.
Возвращаемое значение
Предикат, всегда оценивающий к
value
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.4 и позже.
-
Создает и возвращает предикат, оценивающий использование указанного блочного объекта и словаря привязки.
Объявление
Swift
init(block
block
: (AnyObject!, [NSObject : AnyObject]!) -> Bool) -> NSPredicateObjective C
+ (NSPredicate *)predicateWithBlock:(BOOL (^)(id evaluatedObject, NSDictionary *bindings))
block
Параметры
block
Блок применяется к объекту, который будет оценен.
Блок берет два параметра:
evaluatedObject
Объект, который будет оценен.
bindings
Словарь переменных замены. Словарь должен содержать пары ключ/значение для всех переменных в получателе.
Блочные возвраты
YES
true
еслиevaluatedObject
оценивает к истине, иначеNO
false
.Возвращаемое значение
Новый предикат этим оценивает использование объектов
block
.Специальные замечания
В OS X v10.6, Базовая Информационная поддержка этот метод в и атомарных хранилищах в памяти, но не в находящемся в SQLite хранилище.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
-
Возвращает булево значение, указывающее, соответствует ли данный объект условия, указанные получателем.
Объявление
Swift
func evaluateWithObject(_
object
: AnyObject) -> BoolObjective C
- (BOOL)evaluateWithObject:(id)
object
Параметры
object
Объект, против которого можно оценить получатель.
Возвращаемое значение
YES
true
еслиobject
соответствует условия, указанные получателем, иначеNO
false
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.4 и позже.
-
Возвращает булево значение, указывающее, соответствует ли данный объект условия, указанные получателем после замены в значениях в данном словаре переменных.
Объявление
Swift
func evaluateWithObject(_
object
: AnyObject, substitutionVariablesvariables
: [NSObject : AnyObject]?) -> BoolObjective C
- (BOOL)evaluateWithObject:(id)
object
substitutionVariables:(NSDictionary *)variables
Параметры
object
Объект, против которого можно оценить получатель.
variables
Словарь переменных замены. Словарь должен содержать пары ключ/значение для всех переменных в получателе.
Возвращаемое значение
YES
true
еслиobject
соответствует условия, указанные получателем после замены в значениях вvariables
для любых заменяющих маркеров, иначеNO
false
.Обсуждение
Этот метод возвращает тот же результат как два процесса шага первого вызова
predicateWithSubstitutionVariables:
на получателе и затем вызовеevaluateWithObject:
на возвращенном предикате. Этот метод оптимизирован для ситуаций, требующих неоднократно оценки предиката с переменными замены с различными подстановками переменных.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
-
Вызовите предикат, надежно декодировавшийся для разрешения оценки.
Объявление
Swift
func allowEvaluation()
Objective C
- (void)allowEvaluation
Обсуждение
При безопасном декодировании
NSPredicate
объект закодировал использованиеNSSecureCoding
, оценка отключена, потому что потенциально небезопасно оценить предикаты, Вы выходите из архива.Перед включением оценки необходимо проверить ключевые пути, селекторы, и т.д. чтобы гарантировать, что не будет выполняться никакой ошибочный или вредоносный код. Как только у Вас есть preflighted предикат, можно включить получатель для оценки путем вызова
allowEvaluation
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.
-
predicateFormat predicateFormat
СвойствоСтрока формата получателя. (только для чтения)
Объявление
Swift
var predicateFormat: String { get }
Objective C
@property(readonly, copy) NSString *predicateFormat
Специальные замечания
Строка, возвращенная этим методом, как гарантируют, не совпадет со строкой, используемой для создания использования предиката
predicateWithFormat:
и т.д. Вы не можете использовать этот метод для создания персистентного представления предиката, который Вы могли использовать для воссоздания исходного предиката. Если Вы нуждаетесь в персистентном представлении предиката, создаете архив (NSPredicate
принимаетNSCoding
протокол).Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.4 и позже.