轉自:https://www.jianshu.com/p/f9fa928173ae
首先,數組不能直接使用KVO使用監聽。當我們想要使用KVO監聽數組的狀态時改變然後盡心操作時,我們需要進行一下幾部。
1.KVO不能監聽UIViewController中的數組。我們需要先建立一個模型,将數組添加值模型中。
@interface SelectedsArr : NSObject
@property (nonatomic, strong) NSMutableArray *selecteds;///<選中的選項集合
@end
2.建立觀察者以及觀察者對象
[self.selectedsArr addObserver:self forKeyPath:@"selecteds" options:NSKeyValueObservingOptionNew context:nil];
3.處理Key的變化
這裡,很重要,當向模型中的可變數組添加新成員時,不能直接用[self.selectedsArr.selecteds addObject:]方法。而使用該用下面的方法
[[self.selectedsArr mutableArrayValueForKey:@"selecteds"] addObject:]];
4.在下面的方法添加監聽到變化後要執行的語句
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context{
}
5.移除監聽
[self removeObserver:self forKeyPath:@"selecteds"];