Суммирование столбца через связь с основными данными

Я пытаюсь изменить учебник Mike Swans Core Data Expenses, чтобы иметь таблицу со списком категорий в одном столбце и их балансами в следующем столбце.

Я попытался связать значение второго столбца с:

1. CategoryController.arrangedObjects.transactions.@sum.amount
2. CategoryController.arrangedObjects.@sum.transactions.@sum.amount

Номер 2, казалось, кратко работал с существующими записями, но это явно не правильно, так как я не могу заставить его работать снова. Я получаю сообщение

[<_NSFaultingMutableSet 0x100166b00> addObserver:forKeyPath:options:context:] is not supported. Key path: @sum.amount

Должно ли это быть возможно без кода? Кажется странным, что я могу легко получить @sum для выбранной категории в метке, но не для всего списка в столбце...

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

РЕДАКТИРОВАТЬ:- Я исправил отдельную проблему с привязкой к неправильному контроллеру и решил вернуться к этому. Обе вышеперечисленные опции работают (подсчет столбцов), но когда я пытаюсь добавить новую категорию, они оба вызывают это исключение. Попытка удалить существующую категорию вызывает другое исключение (которое, я предполагаю, является обратным первому):

Cannot remove an observer <NSTableBinder 0x10017e5b0> for the key path "transactions.@sum.amount" from <NSManagedObject 0x10303dda0> because it is not registered as an observer

1 ответ

Я не знаю, поможет ли это вам, но я только что столкнулся с подобной проблемой, когда привязка NSTextField к сумме одного из моих полей (arrayController.arrangedObjects.@ Sum.duration) вызвала бы исключение, тогда как привязка к arrayController.selection.@sum.duration работал нормально.

Я закончил тем, что поместил это в код, как:

// In my ViewController class.
- (void) awakeFromNib
{
    [totalLabel bind:@"value" toObject:arrayController
         withKeyPath:@"arrangedObjects.@sum.duration" 
             options:nil];
}

... и, кажется, работает как ожидалось.

Другие вопросы по тегам