Допустим, у меня есть NSArrayController, который содержит элементы, каждый со свойствами netCost и netProfit, и я хочу создать метку Total Percent Profit (содержащую сумму прибыли, поделенную на сумму затрат).
В классе контроллера со ссылкой на контроллер массива я попытался сделать это следующим образом:
+ (NSSet *)keyPathsForValuesAffectingTotalPercentProfit {
return [NSSet setWithObjects:
@"myArrayController.arrangedObjects.@sum.netProfit",
@"myArrayController.arrangedObjects.@sum.netCost",
nil];
}
- (NSDecimalNumber *)totalPercentProfit {
NSDecimalNumber *totalProfit = [self valueForKeyPath:@"myArrayController.arrangedObjects.@sum.netProfit"];
NSDecimalNumber *totalCost = [self valueForKeyPath:@"myArrayController.arrangedObjects.@sum.netCost"];
if (!([totalCost compare:[NSDecimalNumber zero]] == NSOrderedSame)) {
return [totalProfit decimalNumberByDividingBy:totalCost];
} else {
return nil;
}
}
Тем не менее, метка, связанная с этим свойством totalPercentProfit, не обновляется при изменении путей зависимых ключей.
Кто-нибудь может указать мне правильное направление для исправления этого?