Что кодирует значение ключа?
Кодирование значения ключа является механизмом для доступа к свойствам объекта косвенно, использования строк для идентификации свойств, а не через вызов метода доступа или доступа к ним непосредственно через переменные экземпляра. В сущности кодирование значения ключа определяет образцы и сигнатуры методов, которые реализуют методы доступа Вашего приложения.
Методы доступа, как имя предполагает, обеспечивают доступ к значениям свойств модели данных Вашего приложения. Существует две канонических формы средства доступа — получают средства доступа и устанавливают средства доступа. Получите средства доступа, также называемые методами get, возвратите значения свойства. Средства доступа набора, также называемые методами set, устанавливают значение свойства. Существует метод get и варианты метода set для контакта с обоими атрибутами объектов и к - много отношений.
Реализация значения ключа, кодирующего совместимые средства доступа в Вашем приложении, является важным принципом разработки. Средства доступа помогают осуществить надлежащее скрытие данных и упростить интеграцию с другими технологиями, такими как наблюдение значения ключа, Базовые Данные, привязка Какао и scriptability. Методы кодирования значения ключа могут, во многих случаях, также быть использованы для упрощения кода приложения.
Существенные методы для кодирования значения ключа объявляются в NSKeyValueCoding
Objective C неофициальный протокол и реализации по умолчанию предоставлены NSObject
.
Значение ключа, кодирующее свойства поддержек с объектными значениями, а также скалярные типы и структуры. Непараметры объекта и типы возврата обнаружены и автоматически обернуты и развернуты, как описано в Поддержке Скаляра и Структуры.
Кодирование значения ключа и сценарии
Поддержка сценариев в Какао разработана так, чтобы приложение могло легко реализовать сценарии путем доступа к его объектам модели — объекты, инкапсулирующие данные приложения. Когда пользователь выполняет команду AppleScript, предназначающуюся для Вашего приложения, цель для той команды для движения непосредственно в объекты модели приложения, чтобы сделать работу.
Сценарии в OS X полагаются в большой степени на кодирование значения ключа для оказания автоматической поддержки для выполнения команд AppleScript. В scriptable приложении объект модели определяет ряд ключей, которые это поддерживает. Каждый ключ представляет свойство объекта модели. Некоторые примеры связанных со сценариями ключей words
, font
, documents
, и color
. Значение ключа, кодирующее API, обеспечивает универсальный и автоматический способ запросить объект для значений его ключей и установить новые значения для тех ключей.
Поскольку Вы разрабатываете объекты своего приложения, необходимо определить набор ключей для объектов модели и реализовать соответствующие методы доступа. Тогда при определении комплектов сценария для приложения можно указать ключи, которые поддерживает каждый scriptable класс. При поддержке кодирования значения ключа Вы получите много сценариев поддержки «бесплатно».
В AppleScript иерархии объектов определяют структуру объектов модели в приложении. Команды Most AppleScript указывают один или несколько объектов в Вашем приложении путем развертки этой иерархии объектов от родительского контейнера до дочернего элемента. Можно определить отношения между свойствами, доступными посредством кодирования значения ключа в описаниях класса. Дополнительную информацию см. в Описании Отношений Свойства.
Поддержка сценариев какао использует в своих интересах кодирование значения ключа, чтобы получить и установить информацию в scriptable объектах. Метод в Objective C неофициальный протокол NSScriptKeyValueCoding
обеспечивает дополнительные возможности работы с кодированием значения ключа, включая получение и установку значений ключа индексом в ключах мультизначения и принуждении (или преобразование) значение ключа к надлежащему типу данных.
Используя кодирование значения ключа для упрощения кода
Можно использовать методы кодирования значения ключа в собственном коде для обобщения реализаций. Например, в OS X NSTableView
и NSOutlineView
объекты оба связывают строку идентификатора с каждым из их столбцов. Путем создания этого идентификатора тем же как ключ для свойства, которое Вы хотите вывести на экран, можно значительно упростить код.
Перечисление 1 показывает реализацию NSTableView
метод делегата, не используя кодирование значения ключа. Перечисление 2 показывает реализацию, использующую в своих интересах кодирование значения ключа для возврата надлежащего значения с помощью идентификатора столбца в качестве ключа.
Реализация перечисления 1 метода источника данных без кодирования значения ключа
- (id)tableView:(NSTableView *)tableview |
objectValueForTableColumn:(id)column row:(NSInteger)row { |
ChildObject *child = [childrenArray objectAtIndex:row]; |
if ([[column identifier] isEqualToString:@"name"]) { |
return [child name]; |
} |
if ([[column identifier] isEqualToString:@"age"]) { |
return [child age]; |
} |
if ([[column identifier] isEqualToString:@"favoriteColor"]) { |
return [child favoriteColor]; |
} |
// And so on. |
} |
Реализация перечисления 2 метода источника данных с кодированием значения ключа
- (id)tableView:(NSTableView *)tableview |
objectValueForTableColumn:(id)column row:(NSInteger)row { |
ChildObject *child = [childrenArray objectAtIndex:row]; |
return [child valueForKey:[column identifier]]; |
} |