2014-01-07 54 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

相關問題