Привязка объектов NSXML к пользовательскому интерфейсу
Экземпляры всех классов NSXML являются объектами модели, соответствующими протоколу кодирования значения ключа и уведомляющими наблюдателей, соответствующих протоколу наблюдения значения ключа любого изменения в их атрибутах. Следовательно, можно установить привязку между объектами NSXML и объектами в пользовательском интерфейсе с помощью технологии привязки Какао. С привязкой изменение в значении атрибута объекта NSXML распространено автоматически к свойству пользовательского интерфейса (такому как строковое значение текстового поля), и наоборот. Вместо пользовательского контроллера, содержащего стопки “кода связующего звена” для посредничества между моделью и объектами представления Вашего приложения, в Интерфейсном Разработчике, можно связать атрибуты модели со свойствами пользовательского интерфейса через готовые контроллеры.
Эта статья исследует, как можно эффективно установить привязку между объектами NSXML и пользовательским интерфейсом путем рассмотрения демонстрационного проекта XMLBrowser. Это не учебное руководство на привязке; вместо этого, это - тематическое исследование того, как Вы можете фактор в иерархической модели данных NSXML при разработке привязки, соединяющей объекты приложения.
Интерфейс
Кроме того давайте посмотрим всего на одну часть пользовательского интерфейса для приложения XMLBrowser. Когда по вкладке Editor щелкают, рисунок 1 показывает область, сделанную видимой; это также показывает Элементы sub область той области.
Текущий узел, имя которого показано чуть выше самого большого табличного представления, является окончательной контрольной точкой для всего остального на окне. Сначала, текущий узел является объектом NSXMLDocument представление всего документа. Любые дочерние элементы текущего узла выведены на экран в большом табличном представлении; первоначально, это - корневой элемент. При выборе дочернего узла в табличном представлении текстовое поле наверху окна выводит на экран свое записанное нотами XPath расположение в дереве, и текстовое представление в нижнем левом квадранте окна выводит на экран свое строковое представление XML. Если выбранный дочерний элемент является узлом элемента с атрибутами или пространствами имен, отображения приложения их в табличных представлениях Пространств имен и Атрибутах.
При нажатии “>” кнопка, в то время как дочерний узел выбран, выбранный узел становится текущим узлом, и остальная часть окна обновляется для отражения этого. Дочерние элементы нового текущего узла выведены на экран в большом табличном представлении с первым дочерним элементом, автоматически выбранным. Текстовое поле XPath и XML-строковое текстовое содержание изменения представления соответственно, и любые атрибуты или пространства имен нового дочернего элемента появляются в их соответствующих табличных представлениях. Для возвращения иерархии, таким образом сбрасывая текущий узел к его родителю, Вы нажимаете “<“кнопка.
Подключение контроллеров и объектов NSXMLNode
Объектная модель для привязки, используемой в окне, показанном на рисунке 1), довольно просто:
Существует объект NSXMLNode, определял «текущий» узел. Когда приложение сбрасывает переменную экземпляра, содержащую этот объект, это использует методы NSXMLNode
parent
иchildAtIndex:
перемещаться по древовидной иерархии (где индекс предоставляется текущим выбором основного табличного представления).Существует к - многие отношение между текущим узлом, и его дочерние элементы (получил доступ через его
children
свойство).В массиве, содержащем дочерние элементы текущего узла, выбран один из дочерних элементов (NSArrayController
selection
свойство).Существует к - многие отношение между выбранным дочерним узлом и его атрибутами и пространствами имен.
Конфигурация объектов NSXML и объектов контроллера в приложении отражает эту объектную модель. Четыре стандартных объекта контроллера добавляются к файлу пера NSXMLBrowser для этого окна:
Экземпляр NSObjectController для управления привязкой с текущим узлом (названный «XMLNodeController»)
Экземпляр NSArrayController для управления привязкой с дочерними элементами текущего узла (названный «XMLNodeArrayController»)
Два экземпляра NSArrayController для управления привязкой с, соответственно, атрибуты и пространства имен любого выбранного дочернего элемента (названный «XMLAttributesController» и «XMLNamespacesController»)
Рисунок 2 изображает соединения среди этих экземпляров контроллера и контроллера пользовательского приложения, который называют AppController. (XMLNamespacesController опущен, потому что его конфигурация почти идентична тому из XMLAttributesController.)
В частности конфигурация привязки между контроллерами и объектами модели NSXML состоит из следующих шагов:
Соедините выход содержания экземпляра XMLNodeController к контроллеру приложения (AppController).
Установите ключи XMLNodeController как показано:
Первая часть каждого ключевого пути идентифицирует
current
атрибут AppController и второй части идентифицирует атрибут текущего объекта NSXMLNode.Установите ключи XMLNodeArrayController, чтобы быть атрибутами класса NSXMLNode:
Обратите внимание на то, что класс объекта в этом случае указан как NSXMLNode.
Установите привязку между
contentArray
свойство XMLNodeArrayController иcurrent.children
атрибут, к которому получает доступ XMLNodeController черезselection
ключ.В области Attributes для XMLAttributesController, набор
name
иstringValue
ключи для атрибутов XML.В области Bindings для XMLAttributesController установите привязку между
contentArray
свойство контроллера иattributes
атрибут, к которому получает доступ XMLNodeArrayController черезselection
ключ.Повторите последние два шага для XMLNamespacesController, заняв место
namespaces
дляattributes
для ключевого пути модели.
Привязка пользовательского интерфейса
Как только Вы создали ассоциации между объектами NSXMLNode модели и контроллерами приложения XMLBrowser, можно установить привязку между объектами в пользовательском интерфейсе и их контроллерах, следовательно расширив привязку до связанных объектов модели. Чтобы сделать это, выберите объект пользовательского интерфейса и найдите требуемое свойство привязки в области Bindings окна Info. Для объектов пользовательского интерфейса, показывающих единственные значения, такие как текстовые поля и столбцы таблицы, обычно называют это свойство value
или data
. Для объектов, показывающих массивы данных, такие как табличные представления, свойства называют (в этом случае) contentArray
и selectionIndexes
. В то время как для контроллеров их данные появляются в “категории” Содержания Контроллера, для объектов пользовательского интерфейса обязательные ключи появляются в категории «Значения» привязки.
Разверните представление для связанного с содержанием свойства привязки объекта пользовательского интерфейса. Тогда укажите контроллер для установления привязки с, ключ контроллера для использования для привязки и ключевого пути к атрибуту модели. Например, привязка для поля XPath в области Editor XMLBrowser появляется как на рисунке 3.
Таблица 1 перечисляет привязку для большинства объектов пользовательского интерфейса в этой части приложения XMLBrowser.
«Содержание», привязывающее табличные представления, является дополнительным и создается автоматически при привязке столбца таблицы.