NSPredicateEditorRowTemplate
NSPredicateEditorRowTemplate
описывает доступные предикаты и как вывести на экран их.
Можно создать экземпляры NSPredicateEditorRowTemplate
программно или в Интерфейсном Разработчике. По умолчанию несоставной шаблон строки имеет три представления: раскрывающееся (или поле статического текста) слева, поле раскрывающегося или статического текста для операторов, и или раскрывающееся или другое представление справа. Можно разделить на подклассы NSPredicateEditorRowTemplate
создать шаблон строки с различными числами или типами представлений.
NSPredicateEditorRowTemplate
реальный класс, но он имеет пять примитивных методов, которыми вызывают NSPredicateEditor
: templateViews
, matchForPredicate:
, setPredicate:
, displayableSubpredicatesOfPredicate:
, и predicateWithSubpredicates:
. NSPredicateEditorRowTemplate
реализации все они, но можно переопределить их для пользовательских шаблонов. Примитивные методы используются экземпляром NSPredicateEditor
следующим образом.
Во-первых, экземпляр NSPredicateEditor
создается, и некоторые шаблоны строки установлены на нем — или через файл пера или программно. Первая вещь, которую делает редактор предиката, спрашивает каждый из шаблонов для их представлений, с помощью templateViews
.
После установки редактора предиката Вы обычно отправляете ему a setObjectValue:
обменивайтесь сообщениями для восстановления сохраненного предиката. NSPredicateEditor
потребности определить, какой из его шаблонов должен вывести на экран каждый предикат в дереве предиката. Это делает это путем отправки каждой его строки обрабатывает a по шаблону matchForPredicate:
обменивайтесь сообщениями и выбор того, возвращающего самое высокое значение.
После нахождения лучшего соответствия для предиката, NSPredicateEditor
копии, обрабатывающие по шаблону для получения новых представлений, вставляют их в надлежащую строку, и затем устанавливают предикат на шаблонном использовании setPredicate:
. В том методе, NSPredicateEditorRowTemplate
объект должен установить значения своих представлений для представления того предиката.
NSPredicateEditorRowTemplate
затем просит у шаблона “визуализуемые подпредикаты” предиката путем отправки a displayableSubpredicatesOfPredicate:
сообщение. Если шаблон представляет предикат полностью, или если предикат не имеет никаких подпредикатов, это может возвратиться nil
для этого. Иначе, это должно возвратить список предикатов, которые будут превращены в подстроки строки того шаблона. Целый процесс повторяется для каждого подпредиката.
В этой точке пользователь видит сохраненный предикат. Если пользователь тогда вносит некоторые изменения в представления шаблонов, это вызывает NSPredicateEditor
повторно вычислить его предикат, прося, чтобы каждый из шаблонов возвратил предикат, представленный новыми значениями представления, передав в подпредикатах, представленных подстроками (пустой массив, если нет ни одного, или nil
если они не поддерживаются тем типом предиката):
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
Печатаемый
-
NSCoding
-
NSCopying
-
NSObject
Оператор импорта
Swift
import AppKit
Objective C
@import AppKit;
Доступность
Доступный в OS X v10.5 и позже.
-
init (leftExpressions:rightExpressions:modifier:operators:options:) - initWithLeftExpressions:rightExpressions:modifier:operators:options:
Инициализирует и возвращается, “популярность выталкивают всплывающее окно” - шаблон строки стиля.
Объявление
Swift
init!(leftExpressions
leftExpressions
: [AnyObject]!, rightExpressionsrightExpressions
: [AnyObject]!, modifiermodifier
: NSComparisonPredicateModifier, operatorsoperators
: [AnyObject]!, optionsoptions
: Int)Objective C
- (instancetype)initWithLeftExpressions:(NSArray *)
leftExpressions
rightExpressions:(NSArray *)rightExpressions
modifier:(NSComparisonPredicateModifier)modifier
operators:(NSArray *)operators
options:(NSUInteger)options
Параметры
leftExpressions
Массив
NSExpression
объекты, представляющие левую сторону предиката.rightExpressions
Массив
NSExpression
объекты, представляющие правую сторону предиката.modifier
Модификатор для предиката (см.
NSComparisonPredicateModifier
для возможных значений).operators
Массив
NSNumber
объекты, указывающие тип оператора (см.NSPredicateOperatorType
для возможных значений).options
Опции для предиката (см.
NSComparisonPredicate_Options
для возможных значений).Возвращаемое значение
Шаблон строки “популярности выталкивает всплывающее окно” - форма, с левым и правым раскрывается, представление левого и правого выражения выстраивает leftExpressions и rightExpressions и центральное раскрывающееся представление операторов.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
init (leftExpressions:rightExpressionAttributeType:modifier:operators:options:) - initWithLeftExpressions:rightExpressionAttributeType:modifier:operators:options:
Инициализирует и возвращается, “популярность выталкивают представление” - шаблон строки стиля.
Объявление
Swift
init!(leftExpressions
leftExpressions
: [AnyObject]!, rightExpressionAttributeTypeattributeType
: NSAttributeType, modifiermodifier
: NSComparisonPredicateModifier, operatorsoperators
: [AnyObject]!, optionsoptions
: Int)Objective C
- (instancetype)initWithLeftExpressions:(NSArray *)
leftExpressions
rightExpressionAttributeType:(NSAttributeType)attributeType
modifier:(NSComparisonPredicateModifier)modifier
operators:(NSArray *)operators
options:(NSUInteger)options
Параметры
leftExpressions
Массив
NSExpression
объекты, представляющие левую сторону предиката.attributeType
Тип атрибута для правой стороны предиката. Это значение диктует тип представления, создаваемого, и как объектное значение управления принуждено прежде, чем поместить его в предикат.
modifier
Модификатор для предиката (см.
NSComparisonPredicateModifier
для возможных значений).operators
Массив
NSNumber
объекты, указывающие тип оператора (см.NSPredicateOperatorType
для возможных значений).options
Опции для предиката (см.
NSComparisonPredicate_Options
для возможных значений).Возвращаемое значение
Шаблон строки инициализировал использование данных параметров.
Обсуждение
Тип
attributeType
диктует тип создаваемого представления. Например,NSDateAttributeType
создастNSDatePicker
объект,NSInteger64AttributeType
создаст поле краткого текста, иNSStringAttributeType
произведет более длинное текстовое поле. Можно изменить размеры представлений, как Вы хотите.Предикаты автоматически не принуждают типы для Вас. Например, сравнение числа к строке повысит исключение. Поэтому тип атрибута также необходим, чтобы определить, как объектное значение управления должно быть принуждено прежде, чем поместить его в предикат.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Инициализирует и возвращает шаблон строки, подходящий для отображения составных предикатов.
Объявление
Swift
init!(compoundTypes
compoundTypes
: [AnyObject]!)Objective C
- (instancetype)initWithCompoundTypes:(NSArray *)
compoundTypes
Параметры
compoundTypes
Массив
NSNumber
объекты, указывающие составные типы предиката. ПосмотритеCompound_Predicate_Types
для возможных значений.Возвращаемое значение
Шаблон строки, инициализированный для отображения составных предикатов типов, указанных
compoundTypes
.Обсуждение
NSPredicateEditor
содержит такой шаблон по умолчанию.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
templatesWithAttributeKeyPaths (_: inEntityDescription:) + templatesWithAttributeKeyPaths:inEntityDescription:
Возвращает массив шаблонов предиката для данных ключевых путей атрибута для данного объекта.
Объявление
Swift
class func templatesWithAttributeKeyPaths(_
keyPaths
: [AnyObject]!, inEntityDescriptionentityDescription
: NSEntityDescription!) -> [AnyObject]!Objective C
+ (NSArray *)templatesWithAttributeKeyPaths:(NSArray *)
keyPaths
inEntityDescription:(NSEntityDescription *)entityDescription
Параметры
keyPaths
Массив ключевых путей атрибута, происходящих в
entityDescription
. Ключевые пути могут пересечь отношения, но должны завершиться в атрибутах.entityDescription
Базовое описание объекта Данных.
Возвращаемое значение
Массив предиката обрабатывает по шаблону для
keyPaths
возникновение вentityDescription
.Обсуждение
Этот метод определяет, который ключ соединяет каналом в описании объекта, может использовать те же представления (т.е. совместно использовать тот же тип атрибута). Для каждой из этих групп это инстанцирует отдельных шаблонов через
initWithLeftExpressions:rightExpressions:modifier:operators:options:
.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Если получатель может представлять данный предикат, и, возвращает положительное число
0
если это не может.Объявление
Swift
func matchForPredicate(_
predicate
: NSPredicate!) -> DoubleObjective C
- (double)matchForPredicate:(NSPredicate *)
predicate
Возвращаемое значение
Положительное число, если шаблон может представлять
predicate
, и0
если это не может.Обсуждение
По умолчанию, возвраты оценивает в диапазоне
0
к1
.Самое высокое соответствие среди всех шаблонов определяет, какой шаблон ответственен за отображение предиката. Можно переопределить это для определения, который утверждает пользовательские шаблонные дескрипторы.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает представления для получателя.
Объявление
Swift
var templateViews: [AnyObject]! { get }
Objective C
@property(readonly, copy) NSArray *templateViews
Возвращаемое значение
Представления для получателя.
Обсуждение
Экземпляры
NSPopUpButton
обрабатываются особенноNSPredicateEditor
; их пункты меню объединяются в единственную кнопку всплывающего меню, и соответствие заголовков пункта меню объединено. Таким образом единственное дерево создается из отдельных шаблонов.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Устанавливает значение представлений согласно данному предикату.
Объявление
Swift
func setPredicate(_
predicate
: NSPredicate!)Objective C
- (void)setPredicate:(NSPredicate *)
predicate
Параметры
predicate
Значение предиката для получателя.
Обсуждение
Этот метод только вызывают если
matchForPredicate:
возвращенный положительное значение для получателя.Можно переопределить это для установки значений пользовательских представлений.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает подпредикаты, которые должны быть сделаны подстроками данного предиката.
Объявление
Swift
func displayableSubpredicatesOfPredicate(_
predicate
: NSPredicate!) -> [AnyObject]?Objective C
- (NSArray *)displayableSubpredicatesOfPredicate:(NSPredicate *)
predicate
Параметры
predicate
Объект предиката.
Возвращаемое значение
Подпредикаты, которые должны быть сделаны подстроками
predicate
. Для составных предикатов (экземплярыNSCompoundPredicate
), массив подпредикатов; для других типов предиката, возвратовnil
. Если предикат не имеет никаких подпредикатов, возвратов, если шаблон представляет предикат полностью, илиnil
.Обсуждение
Можно переопределить этот метод для создания пользовательских шаблонов, обрабатывающих сложные составные предикаты.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает предикат, представленный значениями представлений получателя и данными подпредикатами.
Объявление
Swift
func predicateWithSubpredicates(_
subpredicates
: [AnyObject]!) -> NSPredicate!Objective C
- (NSPredicate *)predicateWithSubpredicates:(NSArray *)
subpredicates
Параметры
subpredicates
Массив предикатов.
Возвращаемое значение
Предикат, представленный значениями представлений шаблона и данных подпредикатов. Можно переопределить этот метод для возврата предиката, представленного пользовательскими представлениями.
Обсуждение
Этот метод только вызывают если
matchForPredicate:
возвращенный положительное значение для получателя.Можно переопределить этот метод для возврата предиката, представленного пользовательским представлением.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает левые выражения для получателя.
Объявление
Swift
var leftExpressions: [AnyObject]! { get }
Objective C
@property(readonly, copy) NSArray *leftExpressions
Возвращаемое значение
Левые выражения для получателя
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает правые выражения для получателя.
Объявление
Swift
var rightExpressions: [AnyObject]! { get }
Objective C
@property(readonly, copy) NSArray *rightExpressions
Возвращаемое значение
Правые выражения для получателя
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает составные типы предиката для получателя.
Объявление
Swift
var compoundTypes: [AnyObject]! { get }
Objective C
@property(readonly, copy) NSArray *compoundTypes
Возвращаемое значение
Массив
NSNumber
объекты, указывающие составные типы предиката. ПосмотритеCompound_Predicate_Types
для возможных значений.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает модификатор предиката сравнения для получателя.
Объявление
Swift
var modifier: NSComparisonPredicateModifier { get }
Objective C
@property(readonly) NSComparisonPredicateModifier modifier
Возвращаемое значение
Модификатор предиката сравнения для получателя.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает массив операторов для получателя.
Объявление
Swift
var operators: [AnyObject]! { get }
Objective C
@property(readonly, copy) NSArray *operators
Возвращаемое значение
Массив операторов для получателя.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает опции предиката сравнения для получателя.
Возвращаемое значение
Опции предиката сравнения для получателя. Посмотрите
NSComparisonPredicate_Options
для возможных значений. Возвраты0
если это не применяется (например, для составного шаблона, инициализированного сinitWithCompoundTypes:
).Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает тип атрибута правильного выражения получателя.
Объявление
Swift
var rightExpressionAttributeType: NSAttributeType { get }
Objective C
@property(readonly) NSAttributeType rightExpressionAttributeType
Возвращаемое значение
Тип атрибута правильного выражения получателя.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.5 и позже.