0

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

2 回答 2

1

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

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

@property (nonatomic, readonly) NSNumber *totalValue;

...

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

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

于 2012-11-14T01:29:09.873 回答
-2

不,有时你只需要编写代码。

于 2012-10-24T03:26:57.180 回答