可以说我有一个NSArrayController,其中包含每个具有netCost和netProfit属性的项目,并且我想创建一个Total Percent Profit标签(包含利润之和除以成本之和)。

在引用数组控制器的控制器类中,我尝试如下进行操作:

+ (NSSet *)keyPathsForValuesAffectingTotalPercentProfit {
    return [NSSet setWithObjects:
            @"[email protected]",
            @"[email protected]",
            nil];
}

- (NSDecimalNumber *)totalPercentProfit {
    NSDecimalNumber *totalProfit = [self valueForKeyPath:@"[email protected]"];
    NSDecimalNumber *totalCost = [self valueForKeyPath:@"[email protected]"];
    if (!([totalCost compare:[NSDecimalNumber zero]] == NSOrderedSame)) {
        return [totalProfit decimalNumberByDividingBy:totalCost];
    } else {
        return nil;
    }
}


但是,更改从属键路径时,不会刷新与此totalPercentProfit属性绑定的标签。

有人可以指出我正确的方向进行修复吗?

最佳答案

学习《 KVO编程指南》,Registering Dependent Keys。您不能以这种方式观察多对多关系,并且您绝对不能以这种方式观察聚合。阅读“ Mac OS X v10.4和Mac OS X v10.5上的多对多关系”部分。

10-08 16:58