2014-01-07 55 views
1

作为一个示例,我有一个NSManagedObject类,它有两个属性,我有一个返回两个属性结果的类别。贝娄是描述问题的一些代码。我想要做的是允许其他类为这个新属性添加观察者,并在此属性发生更改时进行更新。我认为我应该做的是让班级观察自己,但是我不确定在哪里添加这些观察员。将KVO添加到核心数据类别的属性

@interface ClassA : NSManagedObject 

@property (nonatomic, retain) NSNumber * number; 
@property (nonatomic, retain) NSSet *classBs; 
@end 

@interface ClassB : NSManagedObject 
@end 

@interface ClassA (category) 
@property(nonatomic, readonly) CGFloat result; 
@end 

@implementation ClassA (helper) 
-(CGFloat) result{ 
    if (self.classBs.count == 0){ 
     return 0.0; 
    } 
    return (float) self.number.floatValue/(float)self.classBs.count; 
} 
@end 

回答

3

Registering Dependent Keys,在那里你会学到,你可以提供如下模式+(NSSet*)keyPathsForValuesAffecting<Key>,像这样一类方法:

+ (NSSet*) keyPathsForValuesAffectingResult 
{ 
    return [NSSet setWithObjects:@"number", @"classBs", nil]; 
} 

如果该方法添加到您的类别,观察员应当numberclassBs更改时,正确通知result已更改。

+0

谢谢。这很好! – datinc

相关问题