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(expressionType
type
: 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(format
expressionFormat
: String, argumentArrayarguments
: [AnyObject]) -> NSExpressionПараметры
expressionFormat
Формат выражения.
arguments
Массив параметров, которые будут использоваться с
expressionFormat
строка.Возвращаемое значение
Инициализированный
NSExpression
объект с указанными параметрами.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
-
Инициализирует выражение с указанным форматом выражения и списком параметров.
Объявление
Swift
init(format
expressionFormat
: String, argumentsargList
: CVaListPointer) -> NSExpressionObjective C
+ (NSExpression *)expressionWithFormat:(NSString *)
expressionFormat
arguments:(va_list)argList
Параметры
expressionFormat
Формат выражения.
argList
Список параметров, которые будут вставлены в
expressionFormat
строка. Список аргументов завершаетсяnil
.Возвращаемое значение
Инициализированный
NSExpression
объект с указанными параметрами.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
-
Возвращает новое выражение, представляющее данное постоянное значение.
Объявление
Swift
init(forConstantValue
obj
: AnyObject) -> NSExpressionObjective C
+ (NSExpression *)expressionForConstantValue:(id)
obj
Параметры
obj
Постоянное значение новое выражение должно представлять.
Возвращаемое значение
Новое выражение, представляющее постоянное значение,
obj
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.4 и позже.
-
Возвращает новое выражение, представляющее оцениваемый объект.
Объявление
Swift
class func expressionForEvaluatedObject() -> NSExpression
Objective C
+ (NSExpression *)expressionForEvaluatedObject
Возвращаемое значение
Новое выражение, представляющее оцениваемый объект.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.4 и позже.
-
Возвращает вызывающее новое выражение
valueForKeyPath:
с данным ключевым путем.Объявление
Swift
init(forKeyPath
keyPath
: String) -> NSExpressionObjective C
+ (NSExpression *)expressionForKeyPath:(NSString *)
keyPath
Параметры
keyPath
Ключевой путь, который должно оценить новое выражение.
Возвращаемое значение
Вызывающее новое выражение
valueForKeyPath:
сkeyPath
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.4 и позже.
-
Возвращает новое выражение, извлекающее значение из словаря привязок переменных для данного ключа.
Объявление
Swift
init(forVariable
string
: String) -> NSExpressionObjective C
+ (NSExpression *)expressionForVariable:(NSString *)
string
Параметры
string
Ключ для переменной для извлечения из словаря привязок переменных.
Возвращаемое значение
Новое выражение, извлекающее из словаря привязок переменных значение для ключа
string
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.4 и позже.
-
Возвращает новое выражение, представляющее любой ключ для запроса Центра внимания.
Объявление
Swift
class func expressionForAnyKey() -> NSExpression
Objective C
+ (NSExpression *)expressionForAnyKey
Возвращаемое значение
Новое выражение, представляющее любой ключ для запроса Центра внимания.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.
-
Возвращает новое составное выражение для данного набора.
Объявление
Swift
init(forAggregate
collection
: [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(forUnionSet
left
: NSExpression, withright
: NSExpression) -> NSExpressionObjective C
+ (NSExpression *)expressionForUnionSet:(NSExpression *)
left
with:(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(forIntersectSet
left
: NSExpression, withright
: NSExpression) -> NSExpressionObjective C
+ (NSExpression *)expressionForIntersectSet:(NSExpression *)
left
with:(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(forMinusSet
left
: NSExpression, withright
: NSExpression) -> NSExpressionObjective C
+ (NSExpression *)expressionForMinusSet:(NSExpression *)
left
with:(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(forSubquery
expression
: NSExpression, usingIteratorVariablevariable
: String, predicatepredicate
: AnyObject) -> NSExpressionObjective C
+ (NSExpression *)expressionForSubquery:(NSExpression *)
expression
usingIteratorVariable:(NSString *)variable
predicate:(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(forBlock
block
: (AnyObject!, [AnyObject]!, NSMutableDictionary!) -> AnyObject!, argumentsarguments
: [AnyObject]) -> NSExpressionObjective C
+ (NSExpression *)expressionForBlock:(id (^)(id evaluatedObject, NSArray *expressions, NSMutableDictionary *context))
block
arguments:(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(forFunction
name
: 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 и позже
random
nil
NSNumber
объект (случайное целочисленное значение)OS X v10.5 и позже
random:
NSArray
объект, содержащий одинNSExpression
объект, представляющий числоNSNumber
объект (случайное целочисленное значение между0
и значение в (монопольном) массиве)OS X v10.5 и позже
now
nil
[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(forFunction
target
: NSExpression, selectorNamename
: String, argumentsparameters
: [AnyObject]) -> NSExpressionПараметры
target
NSExpression
объект, который оценит объект на который селектор, идентифицированный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)
object
context:(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;
Константы
-
ConstantValueExpressionType
NSConstantValueExpressionType
Выражение, всегда возвращающее то же значение.
Доступный в OS X v10.4 и позже.
-
EvaluatedObjectExpressionType
NSEvaluatedObjectExpressionType
Выражение, всегда возвращающее сам объект параметра.
Доступный в OS X v10.4 и позже.
-
VariableExpressionType
NSVariableExpressionType
Выражение, всегда возвращающее любое значение, связано с ключом, указанным 'переменной' в словаре привязки.
Доступный в OS X v10.4 и позже.
-
KeyPathExpressionType
NSKeyPathExpressionType
Выражение, возвращающее что-то, что может использоваться в качестве ключевого пути.
Доступный в OS X v10.4 и позже.
-
FunctionExpressionType
NSFunctionExpressionType
Выражение, возвращающее результат оценки функции.
Доступный в OS X v10.4 и позже.
-
UnionSetExpressionType
NSUnionSetExpressionType
Выражение, создающее объединение результатов двух вложенных выражений.
Доступный в OS X v10.5 и позже.
-
IntersectSetExpressionType
NSIntersectSetExpressionType
Выражение, создающее пересечение результатов двух вложенных выражений.
Доступный в OS X v10.5 и позже.
-
MinusSetExpressionType
NSMinusSetExpressionType
Выражение, комбинирующее два вложенных результата выражения вычитанием набора.
Доступный в OS X v10.5 и позже.
-
SubqueryExpressionType
NSSubqueryExpressionType
Выражение, фильтрующее набор с помощью подпредиката.
Доступный в OS X v10.5 и позже.
-
AggregateExpressionType
NSAggregateExpressionType
Выражение, определяющее агрегат
NSExpression
объекты.Доступный в OS X v10.5 и позже.
-
AnyKeyExpressionType
NSAnyKeyExpressionType
Выражение, представляющее любой ключ.
Доступный в OS X v10.9 и позже.
-
BlockExpressionType
NSBlockExpressionType
Выражение, использующее Блок.
Доступный в OS X v10.6 и позже.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.4 и позже.
-