Создание элемента массива со свойством, которое зависит от агрегатной функции самого массива
Предположим, у меня есть NSArrayController
содержащий ряд объектов "blob". Эти объекты отображаются в представлении NSTableView
через привязки.
Теперь предположим, что каждый объект "blob" содержит свойство с именем amount
, Для одного из NSView
s в каждой строке таблицы, которую я хотел бы отобразить amount / max_amount_in_array
,
Другими словами, мне как-то нужно привязать свою клетку к NSArrayController
"s arrangedObjects.@max.amount
и к NSTableViewCell
"s objectValue.amount
заодно и выполню мой расчет.
Есть ли способ справиться с этим, используя привязки?
В настоящее время единственная идея, которую мне нужно, это иметь ratio
свойство в 'blob' и сам пересчитываю его каждый раз, когда объект добавляется в массив. Это вполне возможно, но кажется, что для решения проблемы должен быть способ, похожий на привязку.
1 ответ
Я сейчас сделал это так:
[libraryCell.myView bind:@"amount"
toObject:libraryCell
withKeyPath:@"objectValue.amount"
options:nil];
[libraryCell.myView bind:@"max"
toObject:_librariesController
withKeyPath:@"arrangedObjects.@max.amount"
options:nil];
Таким образом, в myView есть два свойства (количество и максимум), и когда любое из них изменяется, я делаю расчет и обновляю отображение соответственно.