所以我有两个对象Invoice和InvoiceLineItem。 InvoiceLineItem有一个名为cost
的属性,它是基于其他属性动态创建的。为了帮助我使用KVO /绑定:基于计算值为计算值设置KVO
+ (NSSet *)keyPathsForValuesAffectingCost {
return [NSSet setWithObjects:@"lineItemType", @"serviceCost", @"hourlyRate", @"timeInSeconds", @"productCost", @"quantityOfProduct", @"mileageCost", @"milesTraveled", nil];
}
This works great。当我编辑像serivceCost这样的属性时,表视图中的主要成本更新正常。
在Invoice对象中,我有一个InvoiceLineItems的NSMutableArray。发票有一个类似的属性,称为totalCost
。它是通过遍历行项目进行计算的,只要该行项目未标记为已删除(我为了同步原因所做的),它会累加成本并创建总成本。
现在我的问题/问题。如何设置发票的totalCost,以便在订单项的某个成本发生变化时与KVO /绑定一起使用?
我试着设置:
+ (NSSet *)keyPathsForValuesAffectingTotalCost {
return [NSSet setWithObjects:@"lineItems.cost", nil];
}
,但它不工作。我最终在控制台发生错误:[<NSCFArray 0x1499ff40> addObserver:forKeyPath:options:context:] is not supported. Key path: cost
我是非常接近这种实现的自己,但它是很好听来自别人。问题是,will/didChange的堆叠...为什么不直接调用didChange? – zorn 2009-03-04 22:04:31