как показать среднюю зарплату сотрудников в NSTextField, используя NSArrayController и привязки какао - PullRequest
0 голосов
/ 12 июня 2010

Я новичок в привязках какао, поэтому я попытался создать простое приложение, которое будет просто вычислять среднюю зарплату сотрудников и отображать ее в текстовом поле, используя привязки какао.Я выполнил следующие шаги:

  1. Сделал класс модели: Person с одним свойством на данный момент -

    @ property (readwrite, assign) int salary;

  2. В классе делегата приложения я инициализировал изменяемый массив: personArray с определенными объектами, подобными этому:

    Person *person1 = [[Person alloc] init];
    person1.salary = 5000;
    
    Person *person2 = [[Person alloc] init];
    person2.salary = 15000;
    
    Person *person3 = [[Person alloc] init];
    person3.salary = 7000;
    
    Person *person4 = [[Person alloc] init];
    person4.salary = 9000;
    
    Person *person5 = [[Person alloc] init];
    person5.salary = 11000;
    
    personArray= [[NSMutableArray alloc] initWithObjects:person1, person2, person3, person4, person5,nil];
    
  3. В IB я сбросил NSArrayControllerобъект, установите его режим как Class - Person, добавлен ключ salary в области атрибутов.Затем на панели привязок массив связанного содержимого с классом ApplicationDelegate с путем ключа модели, установленным в self.personArray.

  4. Удалил NSTextField для окна.Связал его значение с объектом ArrayController.Назначен ключ контроллера как - arrangedObjects.Назначенный путь к ключу модели для @avg.salary

Когда я выполнил приложение, я не нашел значения, отображаемого в текстовом поле.

Может кто-нибудь подсказать мне, где я могу бытьнеправильно или какой-то другой лучший способ сделать это

Спасибо,

Miraaj

1 Ответ

0 голосов
/ 13 июня 2010

Проблема, указанная выше, теперь решена, для ее устранения были внесены следующие улучшения:

  1. Я объявил свойство для - personArray в классе ApplicationDelegate.

  2. Вместо назначения объектов Person непосредственно на personArray, я сначала назначил их временному массиву, а затем назначил его для personArray, используя: -setValue:forKey: метод.

Этотеперь работает как задумано:)

...