Суммирование столбца через связь с основными данными
Я пытаюсь изменить учебник 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];
}
... и, кажется, работает как ожидалось.