我正在尝试了解Core Data的工作原理。为此,我尝试使用以下属性实现名为“Color”的简单实体:
为此,我使用了一个名为Color的类,并且我已经覆盖 - (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的颜色选择器)时,组件会自行调整。 我试图实现这一点,但它永远不会奏效。我已经尝试了太多的东西来粘贴它们(这是无关紧要的,因为它不起作用)。 我怎样才能做到这一点 ?理解这一点可以帮助我理解核心数据的工作原理。
答案 0 :(得分:0)
所以这是使它工作的代码片段:
@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];
}
- (void)setValue:(id)value
{
[self willChangeValueForKey:@"value"];
[self setPrimitiveValue:value forKey:@"value"];
[self didChangeValueForKey:@"value"];
[self setRed:@([(NSColor *)value redComponent])];
[self setGreen:@([(NSColor *)value greenComponent])];
[self setBlue:@([(NSColor *)value blueComponent])];
}
+ (NSSet *)keyPathsForValuesAffectingValue
{
return [NSSet setWithArray:@[@"red", @"green", @"blue"]];
}
现在我可以处理HSB滑块了。