关键值编码值的产品keyPath @sum?

时间:2012-10-24 02:33:15

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

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];
}

2 个答案:

答案 0 :(得分:1)

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

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

即可
@property (nonatomic, readonly) NSNumber *totalValue;

...

- (NSNumber *)totalValue
{
    return [NSNumber numberWithDouble:[self.value doubleValue] * [self.quantity doubleValue]];
}

现在您可以将@"items.@sum.totalValue用作keyPath

答案 1 :(得分:-2)

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