Какой смысл свойства «Ключ контроллера» в IB на панели «Инспектор> Привязки»? - PullRequest
2 голосов
/ 28 февраля 2009

Apple говорит:

Атрибут объекта NSController. При привязке к объекту NSController вы используете это поле для выбора первой записи в пути ключа. Меню, связанное с этим полем, отображает свойства, доступные для выбранного объекта контроллера для удобства. Вы можете ввести имя свойства или просто выбрать его из предоставленного списка.

Может кто-нибудь объяснить это другими словами?

1 Ответ

2 голосов
/ 28 февраля 2009

Вы связываете объект представления со свойством модели. Что-то вроде (схематично):

myTextField.value <=> myModel.textValue.

В то время как вы можете привязать свойство представления непосредственно к свойству объекта модели, как показано выше, вы действительно не должны этого делать. Вы упустили бы хорошие функции, предоставляемые контроллерами Apple (например, NSObjectController, NSArrayController и т. Д.). Вместо этого вы должны привязать свой вид к контроллеру, который привязан к модели, например:

myTextField.value <=> myObjectController.selection.textValue 
  and 
myObjectController.contentObject <=> myModel

В этой настройке myObjectController.selection является совместимым с привязкой Key-Value прокси-сервером для myObjectController.contentObject, а myObjectController может выступать в качестве посредника между представлением и моделью. Интерфейсный Разработчик делает это разделение проблем явным, потому что контроллеры могут предоставлять несколько прокси для своей связанной модели (например, NSArrayController arrangedObjects и selectedObjects). При связывании myTextField.value в приведенном выше примере вы должны ввести «selection» в поле «Ключ контроллера» и «textValue» в поле пути «Model Object Keypath».

...