MVC - Интерфейс Какао - Книга образцов дизайна Какао - PullRequest
1 голос
/ 20 мая 2010

Итак, я начал читать эту книгу: http://www.amazon.com/Cocoa-Design-Patterns-Erik-Buck/dp/0321535022

В главе 2 он объясняет шаблон проектирования MVC, а также дает пример, к которому мне нужно кое-что прояснить.

В простом примере показан вид со следующими полями: hourlyRate, WorkHours, Standarthours, оклад.

Пример состоит из 3 частей: Вид - содержит текстовые поля и таблицу (таблица содержит список данных сотрудников).

Контроллер - состоит из класса NSArrayController (содержит массив MyEmployee)

Модель - класс MyEmployee, который описывает сотрудника. В классе MyEmployee есть один метод, который возвращает зарплату в соответствии с логикой расчета: и атрибуты в соответствии с элементами управления пользовательского интерфейса представления. MyEmployee наследуется от NSManagedObject.

Несколько вещей, в которых я не уверен: 1. Внутри файла реализации класса MyEmplpyee метод вычисления получает атрибуты класса, используя предложение типа "[[self valueForKey: @" hourlyRate "] floatValue];" Однако внутри заголовка нет элемента данных с именем hourlyRate или какого-либо из полей представления.

Я не совсем уверен, как это работает и как оно получает значение из правильного поля зрения. (должно ли это быть то же имя, что и имя поля в представлении). может быть, соглашение сделано каким-то образом с помощью построителя интерфейса и не было показано в книге?

и более важно: 2. как это отделяет вид от модели? скажем, поскольку книга подразумевает, что это может произойти, я решил однажды удалить одно из полей в представлении. Насколько я понимаю, это означает изменение способа работы метода зарплаты в MyEmplpyee (потому что у нас меньше на одно поле) и удаление одного атрибута из той же команды. Итак, как же это отделить представление от модели, если изменение одного отражения на другое?

Полагаю, я что-то не так ... Есть комментарии? Спасибо

1 Ответ

0 голосов
/ 20 мая 2010
  1. Реализация метода valueForKey: обсуждается здесь . Обратите внимание, что valueForKey: может фактически получить доступ к ivars напрямую, без вызова каких-либо методов.

  2. Если вы удаляете столбец из NSTableView, вам не нужно удалять его из класса объектов вашей модели. Он все еще там, он просто не отображается.

...