NSExpression
NSExpression используется для представления выражений в предикате.
Операции сравнения в NSPredicate основываются на двух выражениях, как представлено экземплярами NSExpression класс. Выражения создаются для постоянных значений, ключевых путей, и т.д.
Обычно где угодно в NSExpression иерархия классов, где существует составной API и подтипы, которые могут только обоснованно реагировать на подмножество того, что API, вызывая метод, который не целесообразен для того подтипа, заставит исключение быть брошенным.
Типы выражения
В OS X v10.5, NSExpression представляет несколько новых типов выражения: NSSubqueryExpressionType, NSAggregateExpressionType, NSUnionSetExpressionType, NSIntersectSetExpressionType, и NSMinusSetExpressionType.
Составные выражения
Составное выражение позволяет Вам создавать предикаты, содержащие выражения, оценивающие к наборам, содержащим дальнейшие выражения. Набор может быть NSArray, NSSet, или NSDictionary объект.
Например, рассмотрите оператора BETWEEN (NSBetweenPredicateOperatorType); его правая сторона является набором, содержащим два элемента. Используя просто OS X v10.4 API, эти элементы должны быть константами, поскольку нет никакого способа заполнить их использующий переменные выражения. На OS X v10.4, не возможно создать шаблон предиката к эффекту date between {$YESTERDAY, $TOMORROW}; вместо этого необходимо создать новый предикат каждый раз.
Составные выражения не поддерживаются Базовыми Данными.
Выражения подзапроса
NSSubqueryExpressionType создает подвыражение, оценка которого возвращает подмножество набора объектов. Это позволяет Вам создавать сложные запросы через отношения, такие как поиск многократных коррелированых значений на целевом объекте отношения.
Наборы выражений
Наборы выражений (NSUnionSetExpressionType, NSIntersectSetExpressionType, и NSMinusSetExpressionType) объедините результаты способом, подобным NSSet методы.
Обе стороны этих выражений должны оценить к набору; левая сторона должна оценить к NSSet объект, правая сторона может быть любым другим типом набора.
(expression UNION expression)(expression INTERSECT expression)(expression MINUS expression)
Наборы выражений не поддерживаются Базовыми Данными.
Выражения function
На OS X v10.4, NSExpression только поддерживает предопределенный набор функций: sum, count, min, max, и average. К этим предопределенным функциям получили доступ в синтаксисе предиката с помощью пользовательских ключевых слов (например, MAX(1, 5, 10)).
На OS X v10.5 и позже, выражения function также поддерживают произвольные вызовы метода. Для использования этой расширенной функциональности можно теперь использовать синтаксис FUNCTION(receiver, selectorName, arguments, ...), например:
FUNCTION(@"/Developer/Tools/otest", @"lastPathComponent") => @"otest"
Все методы должны взять 0 или больше id параметры и возврат id значение, несмотря на то, что можно использовать CAST выражение для преобразования типов данных со строковыми представлениями с потерями (например, CAST(####, "NSDate")). CAST выражение расширяется в OS X v10.5 для оказания поддержки для кастинга к классам для использования в создании получателей для выражений function.
Обратите внимание на то, что несмотря на то, что Базовая оценка Информационной поддержки предопределенных функций, это не поддерживает оценку пользовательских функций предиката в персистентных хранилищах (во время выборки).
Наследование
-
NSObject -
NSExpression -
NSFetchRequestExpression
-
NSObject -
NSExpression -
NSFetchRequestExpression
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSCoding -
NSCopying -
NSObjectProtocol -
NSSecureCoding -
Печатаемый -
NSCopying -
NSObject -
NSSecureCoding
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.4 и позже.
-
Инициализирует выражение с указанным типом выражения.
Объявление
Swift
init(expressionTypetype: NSExpressionType)Objective C
- (instancetype)initWithExpressionType:(NSExpressionType)typeПараметры
typeТип нового выражения, как определено
NSExpressionType.Возвращаемое значение
Инициализированный
NSExpressionобъект типаtype.Специальные замечания
Этот метод является определяемым инициализатором для
NSExpression.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Инициализирует выражение с указанными параметрами выражения.
Объявление
Objective C
+ (NSExpression *)expressionWithFormat:(NSString *)expressionFormat,,...Параметры
expressionFormat,Формат выражения.
...Список разделенных запятой значений параметров для замены в формат. Список завершается
nil.Возвращаемое значение
Инициализированный
NSExpressionобъект с указанным форматом.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.6 и позже.
-
Инициализирует выражение с указанным форматом выражения и массивом параметров.
Объявление
Swift
init(formatexpressionFormat: String, argumentArrayarguments: [AnyObject]) -> NSExpressionПараметры
expressionFormatФормат выражения.
argumentsМассив параметров, которые будут использоваться с
expressionFormatстрока.Возвращаемое значение
Инициализированный
NSExpressionобъект с указанными параметрами.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.6 и позже.
-
Инициализирует выражение с указанным форматом выражения и списком параметров.
Объявление
Swift
init(formatexpressionFormat: String, argumentsargList: CVaListPointer) -> NSExpressionObjective C
+ (NSExpression *)expressionWithFormat:(NSString *)expressionFormatarguments:(va_list)argListПараметры
expressionFormatФормат выражения.
argListСписок параметров, которые будут вставлены в
expressionFormatстрока. Список аргументов завершаетсяnil.Возвращаемое значение
Инициализированный
NSExpressionобъект с указанными параметрами.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.6 и позже.
-
Возвращает новое выражение, представляющее данное постоянное значение.
Объявление
Swift
init(forConstantValueobj: AnyObject) -> NSExpressionObjective C
+ (NSExpression *)expressionForConstantValue:(id)objПараметры
objПостоянное значение новое выражение должно представлять.
Возвращаемое значение
Новое выражение, представляющее постоянное значение,
obj.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Возвращает новое выражение, представляющее оцениваемый объект.
Объявление
Swift
class func expressionForEvaluatedObject() -> NSExpressionObjective C
+ (NSExpression *)expressionForEvaluatedObjectВозвращаемое значение
Новое выражение, представляющее оцениваемый объект.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Возвращает вызывающее новое выражение
valueForKeyPath:с данным ключевым путем.Объявление
Swift
init(forKeyPathkeyPath: String) -> NSExpressionObjective C
+ (NSExpression *)expressionForKeyPath:(NSString *)keyPathПараметры
keyPathКлючевой путь, который должно оценить новое выражение.
Возвращаемое значение
Вызывающее новое выражение
valueForKeyPath:сkeyPath.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Возвращает новое выражение, извлекающее значение из словаря привязок переменных для данного ключа.
Объявление
Swift
init(forVariablestring: String) -> NSExpressionObjective C
+ (NSExpression *)expressionForVariable:(NSString *)stringПараметры
stringКлюч для переменной для извлечения из словаря привязок переменных.
Возвращаемое значение
Новое выражение, извлекающее из словаря привязок переменных значение для ключа
string.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Возвращает новое выражение, представляющее любой ключ для запроса Центра внимания.
Объявление
Swift
class func expressionForAnyKey() -> NSExpressionObjective C
+ (NSExpression *)expressionForAnyKeyВозвращаемое значение
Новое выражение, представляющее любой ключ для запроса Центра внимания.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.9 и позже.
-
Возвращает новое составное выражение для данного набора.
Объявление
Swift
init(forAggregatecollection: [AnyObject]) -> NSExpressionObjective C
+ (NSExpression *)expressionForAggregate:(NSArray *)collectionПараметры
collectionОбъект коллекции (экземпляр
NSArray,NSSet, илиNSDictionary) это содержит дальнейшие выражения.Возвращаемое значение
Новое выражение, содержащее выражения в
collection.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает новое
NSExpressionобъект, которые представляют объединение данного набора и набора.Объявление
Swift
init(forUnionSetleft: NSExpression, withright: NSExpression) -> NSExpressionObjective C
+ (NSExpression *)expressionForUnionSet:(NSExpression *)leftwith:(NSExpression *)rightПараметры
leftВыражение, оценивающее к
NSSetобъект.rightВыражение, оценивающее к объекту коллекции (экземпляр
NSArray,NSSet, илиNSDictionary).Возвращаемое значение
Новое
NSExpressionобъект, представляющий объединениеleftиright.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает новое
NSExpressionобъект, которые представляют пересечение данного набора и набора.Объявление
Swift
init(forIntersectSetleft: NSExpression, withright: NSExpression) -> NSExpressionObjective C
+ (NSExpression *)expressionForIntersectSet:(NSExpression *)leftwith:(NSExpression *)rightПараметры
leftВыражение, оценивающее к
NSSetобъект.rightВыражение, оценивающее к объекту коллекции (экземпляр
NSArray,NSSet, илиNSDictionary).Возвращаемое значение
Новое
NSExpressionобъект, представляющий пересечениеleftиright.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает новое
NSExpressionобъект, которые представляют вычитание данного набора от данного набора.Объявление
Swift
init(forMinusSetleft: NSExpression, withright: NSExpression) -> NSExpressionObjective C
+ (NSExpression *)expressionForMinusSet:(NSExpression *)leftwith:(NSExpression *)rightПараметры
leftВыражение, оценивающее к
NSSetобъект.rightВыражение, оценивающее к объекту коллекции (экземпляр
NSArray,NSSet, илиNSDictionary).Возвращаемое значение
Новое
NSExpressionобъект, представляющий вычитаниеrightотleft.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
init (forSubquery:usingIteratorVariable:predicate:) + expressionForSubquery:usingIteratorVariable:predicate:Возвращает выражение, фильтрующее набор путем хранения элементов в наборе в данной переменной и хранения элементов, для которых спецификатор возвращает true.
Объявление
Swift
init(forSubqueryexpression: NSExpression, usingIteratorVariablevariable: String, predicatepredicate: AnyObject) -> NSExpressionObjective C
+ (NSExpression *)expressionForSubquery:(NSExpression *)expressionusingIteratorVariable:(NSString *)variablepredicate:(id)predicateПараметры
expressionВыражение предиката, оценивающее к набору.
variableИспользуемый в качестве локальной переменной, и будет тень любые экземпляры переменной в словаре привязки. Переменная удалена, или старое значение заменяется, как только завершается оценка.
predicateПредикат раньше определял, принадлежит ли элемент набора результата.
Возвращаемое значение
Выражение, фильтрующее набор путем хранения элементов в наборе в переменной переменной и хранения элементов, для которых спецификатор возвращает true
Обсуждение
Этот метод создает подвыражение, оценка которого возвращает подмножество набора объектов. Это позволяет Вам создавать сложные запросы через отношения, такие как поиск многократных коррелированых значений на целевом объекте отношения.
Например, предположите, что у Вас есть объект Квартиры, имеющий к - многие отношение к Резидентному объекту, и что Вы хотите создать запрос для всех квартир, населяемых резидентным объектом, именем которого является «Джейн» и чья фамилия является «Самкой». Используя только API, доступный для OS X v 10.4, Вы могли попробовать предикат:
resident.firstname == "Jane" && resident.lastname == "Doe"
но это будет всегда возвращать false с тех пор
resident.firstnameиresident.lastnameоба набора возврата. Вы могли также попробовать:resident.firstname CONTAINS "Jane" && resident.lastname CONTAINS "Doe"
но это также испорчено — это возвращает true, если существует два резидентных объекта, одним из которых является Джон Доу и одним из которых является Джейн Смит. Единственный способ найти желаемые квартиры состоит в том, чтобы сделать две передачи: один через резидентные объекты, чтобы найти, что «Джейн Доу» и одна через квартиры находят тех, где Действительно находится наша Джейн.
Выражения подзапроса обеспечивают способ инкапсулировать этот тип квалификации в единый запрос.
Формат строки для выражения подзапроса:
SUBQUERY(collection_expression, variable_expression, predicate);
где
expressionвыражение предиката, оценивающее к набору,variableExpressionвыражение, которое будет использоваться для содержания каждого отдельного элементаcollection, иpredicateпредикат, используемый, чтобы определить, принадлежит ли элемент набора результата.Используя подзапросы, запрос квартиры мог быть повторно сформулирован как
(SUBQUERY(residents, $x, $x.firstname == "Jane" && $x.lastname == "Doe").@count != 0)
или
(SUBQUERY(residents, $x, $x.firstname == "Jane" && $x.lastname == "Doe")[size] != 0)
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
Создает объект NSExpression, который будет использовать Блок для оценки объектов.
Объявление
Swift
init(forBlockblock: (AnyObject!, [AnyObject]!, NSMutableDictionary!) -> AnyObject!, argumentsarguments: [AnyObject]) -> NSExpressionObjective C
+ (NSExpression *)expressionForBlock:(id (^)(id evaluatedObject, NSArray *expressions, NSMutableDictionary *context))blockarguments:(NSArray *)argumentsПараметры
blockБлок применяется к объекту, который будет оценен.
Блок берет три параметра и возвращает значение:
evaluatedObjectОбъект, который будет оценен.
expressionsМассив выражений предиката, оценивающий к набору.
contextСловарь, который выражение может использовать для хранения временного состояния для одной оценки предиката.
Обратите внимание на то, что
contextявляется непостоянным, и что к этому можно только получить доступ во время оценки выражения. Вы не должны пытаться сохранить его для использования в другом месте.]Блок возвращается
evaluatedObject.argumentsМассив, содержащий
NSExpressionобъекты, которые будут использоваться в качестве параметров во время вызова селектора.Для селектора, берущего параметры, массив должен быть пустым. Для селектора, берущего один или несколько параметров, массив должен содержать тот
NSExpressionобъект, который оценит к экземпляру надлежащего типа для каждого параметра.Если существует несоответствие между числом ожидаемых параметров и числом, Вы обеспечиваете во время оценки, исключение может быть повышено, или недостающие параметры могут просто быть заменены
nil(который происходит, зависит от того, сколько параметров предоставлено, и имеете ли Вы сверх - или потеря значимости).Посмотрите
expressionForFunction:arguments:для полного списка параметров.Возвращаемое значение
Выражение, фильтрующее набор с помощью указанного Блока.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.6 и позже.
См. также
-
Возвращает новое выражение, которое вызовет одну из предопределенных функций.
Объявление
Swift
init(forFunctionname: String, argumentsparameters: [AnyObject]) -> NSExpressionПараметры
nameИмя функции для вызова.
parametersМассив, содержащий
NSExpressionобъекты, которые будут использоваться в качестве параметров во время вызова селектора.Для селектора, берущего параметры, массив должен быть пустым. Для селектора, берущего один или несколько параметров, массив должен содержать тот
NSExpressionобъект, который оценит к экземпляру надлежащего типа для каждого параметра.Если существует несоответствие между числом ожидаемых параметров и числом, Вы обеспечиваете во время оценки, исключение может быть повышено, или недостающие параметры могут просто быть заменены
nil(который происходит, зависит от того, сколько параметров предоставлено, и имеете ли Вы сверх - или потеря значимости).Возвращаемое значение
Новое выражение, вызывающее функцию
nameиспользование параметров вparameters.Обсуждение
nameпараметр может быть одной из следующих предопределенных функций.Функция
Параметр
Возвраты
Доступность
average:NSArrayобъектный содержащийNSExpressionобъекты, представляющие числаNSNumberобъект (среднее число значений в массиве)OS X v10.4 и позже
sum:NSArrayобъектный содержащийNSExpressionобъекты, представляющие числаNSNumberобъект (сумма значений в массиве)OS X v10.4 и позже
count:NSArrayобъектный содержащийNSExpressionобъекты, представляющие числаNSNumberобъект (число элементов в массиве)OS X v10.4 и позже
min:NSArrayобъектный содержащийNSExpressionобъекты, представляющие числаNSNumberобъект (минимум значений в массиве)OS X v10.4 и позже
max:NSArrayобъектный содержащийNSExpressionобъекты, представляющие числаNSNumberобъект (максимум значений в массиве)OS X v10.4 и позже
median:NSArrayобъектный содержащийNSExpressionобъекты, представляющие числаNSNumberобъект (медиана значений в массиве)OS X v10.5 и позже
mode:NSArrayобъектный содержащийNSExpressionобъекты, представляющие числаNSArrayобъект (режим значений в массиве)OS X v10.5 и позже
stddev:NSArrayобъектный содержащийNSExpressionобъекты, представляющие числаNSNumberобъект (стандартное отклонение значений в массиве)OS X v10.5 и позже
add:to:NSArrayобъект, содержащий дваNSExpressionобъекты, представляющие числаNSNumberобъект (сумма значений в массиве)OS X v10.5 и позже
from:subtract:NSArrayобъект, содержащий дваNSExpressionобъекты, представляющие числаNSNumberобъект (результат вычитания второго значения в массиве от первого значения в массиве)OS X v10.5 и позже
multiply:by:NSArrayобъект, содержащий дваNSExpressionобъекты, представляющие числаNSNumberобъект (результат умножения значений в массиве)OS X v10.5 и позже
divide:by:NSArrayобъект, содержащий дваNSExpressionобъекты, представляющие числаNSNumberобъект (результат деления первого значения в массиве вторым значением в массиве)OS X v10.5 и позже
modulus:by:NSArrayобъект, содержащий дваNSExpressionобъекты, представляющие числаNSNumberобъект (остаток от деления первого значения в массиве вторым значением в массиве)OS X v10.5 и позже
sqrt:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий числоNSNumberобъект (квадратный корень значения в массиве)OS X v10.5 и позже
log:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий числоNSNumberобъект (журнал значения в массиве)OS X v10.5 и позже
ln:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий числоNSNumberобъект (естественный журнал значения в массиве)OS X v10.5 и позже
raise:toPower:NSArrayобъект, содержащий дваNSExpressionобъекты, представляющие числаNSNumberобъект (результат повышения первого значения в массиве к питанию второго значения в массиве)OS X v10.5 и позже
exp:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий числоNSNumberобъект (основной-e экспоненциал значения в массиве)OS X v10.5 и позже
ceiling:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий числоNSNumberобъект (самое маленькое интегральное значение не меньше, чем значение в массиве)OS X v10.5 и позже
abs:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий числоNSNumberобъект (абсолютное значение значения в массиве)OS X v10.5 и позже
trunc:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий числоNSNumberобъект (интегральное значение, самое близкое к, но не больше, чем значение в массиве)OS X v10.5 и позже
randomnilNSNumberобъект (случайное целочисленное значение)OS X v10.5 и позже
random:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий числоNSNumberобъект (случайное целочисленное значение между0и значение в (монопольном) массиве)OS X v10.5 и позже
nownil[NSDate]объект (текущая дата и время)OS X v10.5 и позже
floor:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий числоNSNumberобъектiOS 3.0 и позже
uppercase:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий строкуNSStringобъектiOS 3.0 и позже
lowercase:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий строкуNSStringобъектiOS 3.0 и позже
bitwiseAnd:with:NSArrayобъект, содержащий дваNSExpressionобъекты, представляющие числаNSNumberобъект (число обрабатывается какNSInteger)iOS 3.0 и позже
bitwiseOr:with:NSArrayобъект, содержащий дваNSExpressionобъекты, представляющие числаNSNumberобъект (число обрабатывается какNSInteger)iOS 3.0 и позже
bitwiseXor:with:NSArrayобъект, содержащий дваNSExpressionобъекты, представляющие числаNSNumberобъект (число обрабатывается какNSInteger)iOS 3.0 и позже
leftshift:by:NSArrayобъект, содержащий дваNSExpressionобъекты, представляющие числаNSNumberобъект (число обрабатывается какNSInteger)iOS 3.0 и позже
rightshift:by:NSArrayобъект, содержащий дваNSExpressionобъекты, представляющие числаNSNumberобъект (число обрабатывается какNSInteger)iOS 3.0 и позже
onesComplement:NSArrayобъект, содержащий одинNSExpressionобъект, представляющий числоNSNumberобъект (число обрабатывается какNSInteger)iOS 3.0 и позже
noindex:NSArrayобъект, содержащийNSExpressionобъектРезультат оценки параметра, как будто
noindex:выражение function не существовало.iOS 3.0 и позже
Если селектор недопустим, этот метод сразу повышает исключение; если параметры являются неправильными, это повышает исключение во время выполнения.
parametersпараметром является набор, содержащий выражение, оценивающее к набору, как проиллюстрировано в следующих примерах:NSNumber *number1 = [NSNumber numberWithInteger:20];NSNumber *number2 = [NSNumber numberWithInteger:40];NSArray *numberArray = [NSArray arrayWithObjects: number1, number2, nil];NSExpression *arrayExpression = [NSExpression expressionForConstantValue: numberArray];NSArray *argumentArray = [NSArray arrayWithObject: arrayExpression];NSExpression* expression =[NSExpression expressionForFunction:@"sum:" arguments:argumentArray];id result = [expression expressionValueWithObject: nil context: nil];BOOL ok = [result isEqual: [NSNumber numberWithInt: 60]]; // ok == YES
[NSExpression expressionForFunction:@"random" arguments:nil];[NSExpression expressionForFunction:@"max:"arguments: [NSArray arrayWithObject:[NSExpression expressionForConstantValue:[NSArray arrayWithObjects:[NSNumber numberWithInt: 5], [NSNumber numberWithInt: 10], nil]]]];[NSExpression expressionForFunction:@"subtract:from:"arguments: [NSArray arrayWithObjects:[NSExpression expressionForConstantValue: [NSNumber numberWithInt: 5]],[NSExpression expressionForConstantValue: [NSNumber numberWithInt: 10]], nil]];
Специальные замечания
Если селектор неизвестен, этот метод сразу выдает исключение; если параметры являются неправильными, это бросает во время выполнения.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Возвращает выражение, которое возвратит результат вызова на данную цель селектор с именем с помощью данный параметры.
Объявление
Swift
init(forFunctiontarget: NSExpression, selectorNamename: String, argumentsparameters: [AnyObject]) -> NSExpressionПараметры
targetNSExpressionобъект, который оценит объект на который селектор, идентифицированныйnameможет быть вызван.nameИмя метода, который будет вызван.
parametersМассив, содержащий
NSExpressionобъекты, которые могут быть оценены для обеспечения параметров для метода, указанногоname.Возвращаемое значение
Выражение, которое возвратит результат вызова названного селектора
nameна результате оценки целевого выражения с параметрами, указанными путем оценки элементовparameters.Обсуждение
См. описание
expressionForFunction:arguments:для примеров того, как создать массив параметров.Специальные замечания
Если селектор неизвестен, этот метод сразу выдает исключение; если параметры являются неправильными, это бросает во время выполнения.
Это выражение эффективно позволяет Вашему приложению вызывать любой метод на любой объект, к которому это может перейти во время выполнения. Необходимо рассмотреть импликации безопасности этого типа оценки.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
См. также
-
Параметры за выражение. (только для чтения)
Объявление
Swift
var arguments: [AnyObject] { get }Objective C
@property(readonly, copy) NSArray *argumentsОбсуждение
Параметрами выражения является массив выражений, которые будут переданы как параметры во время вызова селектора на операнде выражения function.
Доступ к этому свойству повышает исключение, если это не применимо к выражению.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Набор выражений в составном выражении или элемент набора выражения подзапроса. (только для чтения)
Объявление
Swift
var collection: AnyObject { get }Objective C
@property(readonly, retain) id collectionОбсуждение
Доступ к этому свойству повышает исключение, если это не применимо к выражению.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
constantValue constantValueСвойствоПостоянное значение выражения. (только для чтения)
Объявление
Swift
var constantValue: AnyObject { get }Objective C
@property(readonly, retain) id constantValueОбсуждение
Доступ к этому свойству повышает исключение, если это не применимо к выражению.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
expressionType expressionTypeСвойствоТип выражения для выражения. (только для чтения)
Объявление
Swift
var expressionType: NSExpressionType { get }Objective C
@property(readonly) NSExpressionType expressionTypeОбсуждение
Доступ к этому свойству повышает исключение, если это не применимо к выражению.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Функция для выражения. (только для чтения)
Объявление
Swift
var function: String { get }Objective C
@property(readonly, copy) NSString *functionОбсуждение
Доступ к этому свойству повышает исключение, если это не применимо к выражению.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Ключевой путь для выражения. (только для чтения)
Объявление
Swift
var keyPath: String { get }Objective C
@property(readonly, copy) NSString *keyPathОбсуждение
Доступ к этому свойству повышает исключение, если это не применимо к выражению.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Операнд для выражения. (только для чтения)
Объявление
Swift
@NSCopying var operand: NSExpression { get }Objective C
@property(readonly, copy) NSExpression *operandОбсуждение
Операнд для выражения является объектом, на который будут вызваны селектор или блок выражения. Объект является результатом оценки ключевого пути или одной из определенных функций. Доступ к этому свойству повышает исключение, если это не применимо к выражению.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Предикат выражения подзапроса. (только для чтения)
Объявление
Swift
@NSCopying var predicate: NSPredicate { get }Objective C
@property(readonly, copy) NSPredicate *predicateОбсуждение
Доступ к этому свойству повышает исключение, если это не применимо к выражению.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
leftExpression leftExpressionСвойствоЛевое выражение составного выражения. (только для чтения)
Объявление
Swift
@NSCopying var leftExpression: NSExpression { get }Objective C
@property(readonly, copy) NSExpression *leftExpressionОбсуждение
Доступ к этому свойству повышает исключение, если это не применимо к выражению.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
rightExpression rightExpressionСвойствоПравильное выражение составного выражения. (только для чтения)
Объявление
Swift
@NSCopying var rightExpression: NSExpression { get }Objective C
@property(readonly, copy) NSExpression *rightExpressionОбсуждение
Доступ к этому свойству повышает исключение, если это не применимо к выражению.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
переменная переменнаяСвойствоПеременная для выражения. (только для чтения)
Объявление
Swift
var variable: String { get }Objective C
@property(readonly, copy) NSString *variableОбсуждение
Доступ к этому свойству повышает исключение, если это не применимо к выражению.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Оценивает выражение с помощью данного объекта и контекста.
Объявление
Swift
func expressionValueWithObject(_object: AnyObject?, contextcontext: NSMutableDictionary?) -> AnyObjectObjective C
- (id)expressionValueWithObject:(id)objectcontext:(NSMutableDictionary *)contextПараметры
objectОбъект, против которого оценено выражение.
contextСловарь, который выражение может использовать для хранения временного состояния для одной оценки предиката. Может быть
nil.Обратите внимание на то, что
contextявляется непостоянным, и что к этому можно только получить доступ во время оценки выражения. Вы не должны пытаться сохранить его для использования в другом месте.Возвращаемое значение
Оцененный объект.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Вызовите выражение, надежно декодировавшееся для разрешения оценки.
Объявление
Swift
func allowEvaluation()Objective C
- (void)allowEvaluationОбсуждение
При безопасном декодировании
NSExpressionобъект закодировал использованиеNSSecureCoding, оценка отключена, потому что потенциально небезопасно оценить выражения, Вы выходите из архива.Перед включением оценки необходимо проверить ключевые пути, селекторы, и т.д. чтобы гарантировать, что не будет выполняться никакой ошибочный или вредоносный код. Как только у Вас есть preflighted выражение, можно включить выражение для оценки путем вызова
allowEvaluation.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.9 и позже.
-
expressionBlock expressionBlockСвойствоБлок, выполняющийся для оценки выражения. (только для чтения)
Объявление
Swift
var expressionBlock: (AnyObject!, [AnyObject]!, NSMutableDictionary!) -> AnyObject! { get }Objective C
@property(readonly, copy) id (^expressionBlock)(id, NSArray *, NSMutableDictionary *)Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.6 и позже.
См. также
Типы данных
-
Определяет возможные типы
NSExpression.Объявление
Swift
enum NSExpressionType : UInt { case ConstantValueExpressionType case EvaluatedObjectExpressionType case VariableExpressionType case KeyPathExpressionType case FunctionExpressionType case UnionSetExpressionType case IntersectSetExpressionType case MinusSetExpressionType case SubqueryExpressionType case AggregateExpressionType case AnyKeyExpressionType case BlockExpressionType }Objective C
enum { NSConstantValueExpressionType = 0, NSEvaluatedObjectExpressionType, NSVariableExpressionType, NSKeyPathExpressionType, NSFunctionExpressionType, NSUnionSetExpressionType, NSIntersectSetExpressionType, NSMinusSetExpressionType, NSSubqueryExpressionType = 13, NSAggregateExpressionType = 14, NSAnyKeyExpressionType = 15, NSBlockExpressionType = 19 } typedef NSUInteger NSExpressionType;Константы
-
ConstantValueExpressionTypeNSConstantValueExpressionTypeВыражение, всегда возвращающее то же значение.
Доступный в OS X v10.4 и позже.
-
EvaluatedObjectExpressionTypeNSEvaluatedObjectExpressionTypeВыражение, всегда возвращающее сам объект параметра.
Доступный в OS X v10.4 и позже.
-
VariableExpressionTypeNSVariableExpressionTypeВыражение, всегда возвращающее любое значение, связано с ключом, указанным 'переменной' в словаре привязки.
Доступный в OS X v10.4 и позже.
-
KeyPathExpressionTypeNSKeyPathExpressionTypeВыражение, возвращающее что-то, что может использоваться в качестве ключевого пути.
Доступный в OS X v10.4 и позже.
-
FunctionExpressionTypeNSFunctionExpressionTypeВыражение, возвращающее результат оценки функции.
Доступный в OS X v10.4 и позже.
-
UnionSetExpressionTypeNSUnionSetExpressionTypeВыражение, создающее объединение результатов двух вложенных выражений.
Доступный в OS X v10.5 и позже.
-
IntersectSetExpressionTypeNSIntersectSetExpressionTypeВыражение, создающее пересечение результатов двух вложенных выражений.
Доступный в OS X v10.5 и позже.
-
MinusSetExpressionTypeNSMinusSetExpressionTypeВыражение, комбинирующее два вложенных результата выражения вычитанием набора.
Доступный в OS X v10.5 и позже.
-
SubqueryExpressionTypeNSSubqueryExpressionTypeВыражение, фильтрующее набор с помощью подпредиката.
Доступный в OS X v10.5 и позже.
-
AggregateExpressionTypeNSAggregateExpressionTypeВыражение, определяющее агрегат
NSExpressionобъекты.Доступный в OS X v10.5 и позже.
-
AnyKeyExpressionTypeNSAnyKeyExpressionTypeВыражение, представляющее любой ключ.
Доступный в OS X v10.9 и позже.
-
BlockExpressionTypeNSBlockExpressionTypeВыражение, использующее Блок.
Доступный в OS X v10.6 и позже.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
