Привязка NSTableColumn с использованием операторов сбора, таких как @sum - PullRequest
1 голос
/ 23 декабря 2010

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

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

Значение первого столбца привязано к selectedObjects NSArrayController с путем ключа модели «name».Никаких проблем там нет.

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

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

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

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

1 Ответ

0 голосов
/ 08 ноября 2011

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

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

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

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

    [totalCountField bind: @"value" toObject: arrayController
          withKeyPath:@"arrangedObjects.@sum.price" options:nil];
...