したがって、Invoice と InvoiceLineItem の 2 つのオブジェクトがあります。InvoiceLineItem には と呼ばれるプロパティがcost
あり、他のプロパティに基づいて動的に作成されます。私が使用するKVO /バインディングを支援するには:
+ (NSSet *)keyPathsForValuesAffectingCost {
return [NSSet setWithObjects:@"lineItemType", @"serviceCost", @"hourlyRate", @"timeInSeconds", @"productCost", @"quantityOfProduct", @"mileageCost", @"milesTraveled", nil];
}
これはうまくいきます。serivceCost のようなプロパティを編集すると、テーブル ビューのメイン コストが正常に更新されます。
Invoice オブジェクトには、InvoiceLineItems の NSMutableArray があります。Invoice には と呼ばれる同様のプロパティがありますtotalCost
。これは、明細項目を繰り返し処理することによって計算され、明細項目が削除済みとしてマークされていない限り (同期の理由でこれを行っています)、コストを合計して totalCost を作成します。
今私の質問/問題。項目のコストの 1 つが変更されたときに KVO/バインディングで機能するように、Invoice の totalCost を設定するにはどうすればよいですか?
設定してみました:
+ (NSSet *)keyPathsForValuesAffectingTotalCost {
return [NSSet setWithObjects:@"lineItems.cost", nil];
}
しかし、うまくいきません。コンソールに次のエラーが表示されます。[<NSCFArray 0x1499ff40> addObserver:forKeyPath:options:context:] is not supported. Key path: cost