作为一个例子,我有一个NSManagedObject类,它有两个属性,我有一个类别,返回两个属性的结果。贝娄是一些描述问题的代码。我想要做的是允许其他类为这个新属性添加观察者,并在此属性发生更改时进行更新。我认为我应该做的是让班级观察自己,但我不知道在哪里添加这些观察者。
@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
答案 0 :(得分:3)
请参阅Registering Dependent Keys,在那里您将了解到您可以提供遵循模式+(NSSet*)keyPathsForValuesAffecting<Key>
的类方法,如下所示:
+ (NSSet*) keyPathsForValuesAffectingResult
{
return [NSSet setWithObjects:@"number", @"classBs", nil];
}
如果您将该方法添加到您的类别,则应在result
或number
发生更改时向观察员发出classBs
已更改的通知。