所以我有两个对象,Invoice 和 InvoiceLineItem。InvoiceLineItem 有一个名为的属性cost
,它是基于其他属性动态创建的。为了帮助我使用 KVO/绑定:
+ (NSSet *)keyPathsForValuesAffectingCost {
return [NSSet setWithObjects:@"lineItemType", @"serviceCost", @"hourlyRate", @"timeInSeconds", @"productCost", @"quantityOfProduct", @"mileageCost", @"milesTraveled", nil];
}
这很好用。当我编辑像 serivceCost 这样的属性时,表视图中的主要成本会更新得很好。
在 Invoice 对象中,我有一个 InvoiceLineItems 的 NSMutableArray。Invoice 有一个类似的属性,称为totalCost
. 它是通过迭代行项目来计算的,只要行项目没有被标记为已删除(我这样做是出于同步原因),它就会将成本相加并创建总成本。
现在我的问题/问题。如何设置 Invoice 的 totalCost 以便在行项目的成本之一发生更改时它与 KVO/绑定一起使用?
我尝试设置:
+ (NSSet *)keyPathsForValuesAffectingTotalCost {
return [NSSet setWithObjects:@"lineItems.cost", nil];
}
但它不起作用。我最终在控制台中出现错误:[<NSCFArray 0x1499ff40> addObserver:forKeyPath:options:context:] is not supported. Key path: cost