【问题标题】:Key Value Coding keyPath @sum of product of values?键值编码 keyPath @sum of product of values?
【发布时间】:2012-10-24 02:33:15
【问题描述】:

我有 NSManagedObject 与一组项目的“一对多”关系。我喜欢如何使用 KVC keyPaths 轻松获得下面的 quantity 作为我所有项目的总和。

- (NSNumber *)quantity
{
    return [self valueForKeyPath:@"items.@sum.quantity"];
}

现在我想知道是否可以在这里为value 做类似的事情。 @"items.@sum.(quantity * value)" 之类的东西?

- (NSNumber *)value
{
    double value = 0;
    for (Item *item in self.items)
    {
        value += [[item quantity] doubleValue] * [[item value] doubleValue];
    }
    return [NSNumber numberWithDouble:value];
}

【问题讨论】:

    标签: objective-c xcode core-data key-value-coding


    【解决方案1】:

    我想出了如何做到这一点。

    只需向Item 类添加一个新属性并覆盖getter

    @property (nonatomic, readonly) NSNumber *totalValue;
    
    ...
    
    - (NSNumber *)totalValue
    {
        return [NSNumber numberWithDouble:[self.value doubleValue] * [self.quantity doubleValue]];
    }
    

    现在你可以使用@"items.@sum.totalValue 作为keyPath

    【讨论】:

      【解决方案2】:

      没有。有时你只需要编写代码。

      【讨论】:

        猜你喜欢
        • 2020-07-11
        • 2016-10-21
        • 1970-01-01
        • 1970-01-01
        • 2022-12-01
        • 2022-12-02
        • 2021-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多