天天看點

iOS如何為NSMutableArray添加KVO

轉自: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"];