是否可以绑定到自定义对象并在该对象的特定属性更改时得到通知?
例子:
每个销售代表对象都有一个对销售统计对象的引用,该对象包含汽车和卡车销售的统计数据。自定义NSView
用于在一个图形中绘制汽车和卡车销售。
自定义视图需要访问完整的统计对象,所以我将它绑定到salesRep.salesStats
.
但是,当我更改carSales
属性时,我需要一种更新视图的方法。目前它没有更新,因为它绑定到父对象。
我想避免为每种销售类型建立绑定(这只是一个例子,我的具体情况更复杂)。
@interface SBSalesRep : NSObject {
@property (strong) SBSalesStatistics *salesStats;
}
@interface SBSalesStatistics : NSObject
{
@property (assign) NSInteger carSales;
@property (assing) NSInteger truckSales;
}
@interface SBProgressView : NSView
{
@property (strong) SBSalesStatistics *statsToDisplay;
}
// Setup
SBSalesRep *salesRep = [SBSalesRep new];
// Bind to stats object, because we need car and tuck sales:
[progressView bind:@"statsToDisplay"
toObject:salesRep
withKeyPath:@"salesStats" // How to get notified of property changes here?
options:nil];
// This needs to trigger an update in the statistics view
salesRep.salesStats.carSales = 50;
// I tried this, but it does not work:
[salesRep willChangeValueForKey:@"salesStatistics"];
salesRep.salesStats.carSales = 50;
[salesRep didChangeValueForKey:@"salesStatistics"];