0
我想了解核心數據如何工作。爲此,我一直試圖推行一個名爲「顏色」這些屬性的簡單實體:根據其他屬性設置核心數據屬性
- 值 - >一個NSColor來處理本身的顏色,綁定到NSColorWell
- 紅 - >浮點數值處理的顏色的紅色成分,結合於NSSlider
- 綠色 - >相同紅色,但對於綠色分量,結合於NSSlider
- 藍 - >藍色分量,結合於NSSlider
對於這我使用一個名爲顏色我已經覆蓋 - (id)的值,使色彩取決於組件:
@implementation Color
@dynamic blue;
@dynamic green;
@dynamic name;
@dynamic red;
@dynamic value;
- (id)value
{
return [NSColor colorWithCalibratedRed:self.red.floatValue green:self.green.floatValue blue:self.blue.floatValue alpha:1.0];
}
+ (NSSet *)keyPathsForValuesAffectingValue
{
return [NSSet setWithArray:@[@"red", @"green", @"blue"]];
}
我每次更改滑塊值的顏色適應這些組件。
我想要做的是相反的操作,當我設置顏色(拖放或NSColorWell的顏色選擇器)的組件適應自己。 我試圖實現這一點,但它從來沒有工作。我已經嘗試了太多的東西來粘貼它們(這是無關緊要的,因爲它不起作用)。 我該怎麼做?瞭解這一點可以幫助我理解Core Data的工作原理。
您是否嘗試過實現自定義setter'setValue'? - 實際上,我不會使用「value」作爲屬性名稱,以避免與所有這些鍵值方法(如setValue:forKeyPath等)發生衝突。 – 2013-02-28 19:20:10
您正確實施'setValue:'解決了問題。我現在將發佈工作代碼。謝謝:)(這個名字不是問題,我認爲,因爲它在很多蘋果的類上使用,比如NSControl) – Pyroh 2013-02-28 21:40:04