Привязка NSTableColumn с использованием операторов коллекции, таких как @sum

Mac OS X. Приложение CoreData. NSTableView, управляемый NSArrayController, привязан к контексту управляемого объекта для сущности Country. Сущность Country имеет атрибут «имя» и отношение ко многим, «ветви», к сущности Branch. Сущность Branch имеет атрибут «продажи» (NSNumber).

NSTableView имеет два столбца NSTableColumns. Первый показывает название страны. Второй должен отображать общий объем продаж в этой стране по всем ее филиалам.

Значение первого столбца привязывается к объектам NSArrayController, организованным с помощью ключевого пути модели «имя». Нет проблем.

Значение второго столбца привязано к объектам NSArrayController, организованным с помощью ключевого пути модели «branch. @ Sum.sales». Это не работает. Я получаю сообщение об ошибке: «addObserver: forKeyPath: options: context:] не поддерживается. Путь к ключу: @ sum.sales»

Если вместо этого я добавлю метод totalSales в свой класс Country, и этот метод будет реализован следующим образом:

- (NSNumber *)totalSales
{
    return [[self branches] valueForKeyPath:@"@sum.sales"];
}

и затем я привязываю столбец к totalSales, он работает нормально. Насколько я понимаю, документация по операторам сбора данных должна быть такой же, как простая привязка к «branch. @ Sum.sales». Я не понимаю, почему последнее не работает. Любые идеи? Я видел похожие вопросы на этом и других форумах, но пока не видел объяснения или решения.


person jfewtr    schedule 23.12.2010    source источник


Ответы (1)


Я не знаю, по-прежнему ли эта тема для вас, но, безусловно, нужен ответ.

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

Вашей первой задачей было привязать столбцы таблицы к столбцам массива, и это работает одинаково для всех столбцов и типов.

Вторая задача - получить сумму определенного NSTableColumn, привязанного к определенному другому объекту, например NSTextfield. А делается это так:

    [totalCountField bind: @"value" toObject: arrayController
          withKeyPath:@"[email protected]" options:nil];
person mbpro    schedule 08.11.2011
comment
Нет, я не пытаюсь поместить итог столбца в NSTextField. Это просто и отлично работает. Проблема, с которой я столкнулся, связана со столбцом привязки 2 NSTableView. Я хочу, чтобы в этом столбце отображались общие продажи для каждой страны во всех филиалах этой страны. Но я ценю вашу попытку помочь. Спасибо. - person jfewtr; 14.11.2011
comment
В ПОРЯДКЕ. Я понял. Мне кажется, вы пытаетесь управлять двумя объектами с одним контроллером, второй из которых является субъектом. Я предполагаю, что путь ключа NSArrayController не может справиться с этим, что касается вашего решения, которое явно переводит totalSales на уровень страны, т.е. к основному объекту - person mbpro; 15.11.2011