Что кодирует значение ключа?

Кодирование значения ключа является механизмом для доступа к свойствам объекта косвенно, использования строк для идентификации свойств, а не через вызов метода доступа или доступа к ним непосредственно через переменные экземпляра. В сущности кодирование значения ключа определяет образцы и сигнатуры методов, которые реализуют методы доступа Вашего приложения.

Методы доступа, как имя предполагает, обеспечивают доступ к значениям свойств модели данных Вашего приложения. Существует две канонических формы средства доступа — получают средства доступа и устанавливают средства доступа. Получите средства доступа, также называемые методами 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]];
}