首先,數(shù)組不能直接使用KVO使用監(jiān)聽。當我們想要使用KVO監(jiān)聽數(shù)組的狀態(tài)時改變?nèi)缓蟊M心操作時,我們需要進行一下幾部。
1.KVO不能監(jiān)聽UIViewController中的數(shù)組。我們需要先創(chuàng)建一個模型,將數(shù)組添加值模型中。
@interface SelectedsArr : NSObject
@property (nonatomic, strong) NSMutableArray *selecteds;///<選中的選項集合
@end
2.建立觀察者以及觀察者對象
[self.selectedsArr addObserver:self forKeyPath:@"selecteds" options:NSKeyValueObservingOptionNew context:nil];
3.處理Key的變化
這里,很重要,當向模型中的可變數(shù)組添加新成員時,不能直接用[self.selectedsArr.selecteds addObject:]方法。而使用該用下面的方法
[[self.selectedsArr mutableArrayValueForKey:@"selecteds"] addObject:]];
4.在下面的方法添加監(jiān)聽到變化后要執(zhí)行的語句
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context{
}
5.移除監(jiān)聽
[self removeObserver:self forKeyPath:@"selecteds"];