代码之家  ›  专栏  ›  技术社区  ›  Redwood

将NSArrayController中项的属性的聚合设置为从属键

  •  2
  • Redwood  · 技术社区  · 16 年前

    在引用数组控制器的控制器类中,我尝试按如下方式执行此操作:

    + (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属性的标签不会刷新。

    有人能给我指出解决这个问题的正确方向吗?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Rob Napier    16 年前

    学习KVO编程指南, Registering Dependent Keys

    推荐文章